Corruptissima republica plurimae leges
–Publius Cornelius Tacitus
Author: Bobby Rockers
Only to be found
The essence of success is that it is never necessary to think of a new idea oneself. It is far better to wait until somebody else does it, and then to copy him in every detail, except his mistakes.
–Aubrey Menen
Lux et Veritas
From the earliest days of software technology, the term hacker has been used to describe someone who was particularly proficient with technology. While the term “hacker” has come to mean something malicious to those with only a cursory understanding of geek culture, it is still held as a term of high regard among those who know otherwise. Lately I have gotten the question from students in my IT/IS classes concerning how best to become a “hacker”. While the question they are asking is not precisely the information they want to know, I have decided to answer the question correctly.
While this may seem like a silly exercise, it actually has a long and storied tradition inside of hacker communities. There are a number of well known “guides” that have circulated the halls of old Usenet and dusty Jargon files from many years back with contributions from such luminaries as Bruce Parens, Eric S. Raymond, and Larry Wall. Basically I am going to offer a stupidly basic outline of what I would like to have learned, in the order I would like to have learned it in, to have developed my skill-set (or lack thereof) in the quickest fashion possible.
*One caveat is that I have changed this list 8 times in the last 3 weeks (which is why it has taken so long to post) and added another step just minutes before posting again. My point is that I will probably continue making updates for a while and I would encourage anyone comments or suggestions on how it can be improved.
- Step 1: Start by visiting/read these websites, netcasts, mailing lists, IRC forums, & newsgroups.. everyday! ArsTechnica, Phrack, SecList, Schneier on Security, OWASP, ITSecurity, cDc, Toms Hardware, HackerNew, and the LiquidMatrix Blog. Listen to every episode of Security Now! For extra credit read everything you can handle from the SANS Reading Room. If you don’t understand what you are reading, Google it!
- Step 2: The best resources you can possibly have as an IT Professional are OTHER IT Professionals. This means you need to be part of your local community by networking with other professionals. Nationally there is ACM, AITP, and IEEE. MORE importantly are your local groups & chapters. In the Oklahoma City area we have OKC JavaScript Developers Group, OKC LugNuts, Okcruby, DC405, Oklahoma Game Developers, OK InfraGuard, ISSAOKC, and OKCJug, just to name a few. Join a couple groups and start attending monthly meetings.
- Step 3: Build your own computer. Check out the ArsTechnica System Guide to make sure you have compatible hardware that will actually be cost effective and then purchase the parts at PriceWatch (be sure to check the vendor ratings before you buy.) Yes, you could actually buy a system “kit” from someplace like NewEgg but the value of this exercise is in learning the hows and whys of each component.
- Step 4: Install a Unix style OS on your newly built system… and/or every other system you can get your hands on. I recommend either Fedora or Ubuntu to start with as they are the easiest to begin using but in reality any *nix style will work (i.e. FreeBSD, Linux mint, OpenSuse, OpenSolaris, etc.) No hacker I know lives in Windows (well… unless they are gaming.) Linux OSes provide access to a system on a level you simply will NEVER get on Windows. This is partly because of the power of the Unix system model and partly because hackers develop for hackers on Linux/Unix. After you install your new OS, use it, everyday, as your primary OS.
- Step 5: Make your own website… from scratch. Go get a $6.00/month HostMonster account, decide on a domain name, learn FTP, setup an email account, and start making a website! It is a cheep way to get some direct experience doing many of the most common web task. Finally, got get a copy of the Lama, Pythonista, or Rails Tutorial and go through the ENTIRE tutorial thus creating your first dynamic website content.
- Step 6: Continue building your library. Nobody can know everything there is to know about technology. Having quick access to information that you have (at the very least) read before is a HUGE help. Additionally, going through the programming and hacking literature will give you the best hands-on experience necessary to take the next steps. You should own/have read as many of these as possible:
-
-
- Programming: CC2, SICP, the Camel, Design Patterns, Refactoring, K&R, the Dragon Book, The Little Schemer, F&FSE, and if your are really brave the “Art of Computer Programming.”
- Management & Startups: Peopleware Zero to One, The Lean Startup, The Innovators Dilemma, Rework, and MMM.
- Networking: Computer Networking, Computer Networks, Unix Network Programming, and Hacking.
- Hacking: The Basics of Hacking and Penetration Testing, The Art of Intrusion, and Hacking (again.)
- Hacker Culture: The Hacker Crackdown, The Hacker Handbook, the updated Jargon File, Open Sources, Underground, Revolution in the Valley, Dealers of Lightning, Cathedral and the Bazaar, and Stealing the Network.
- Design: The Design of Everyday things,
- Others: If you have any specific technology interests (say Cisco switches or MS SQL Server) find the appropriate user forums for those groups and ask their users which books are MUST reads. One good technology book is better than 10 mediocre books.
-
-
- Step 7: Pick a transformative technology and learn how to use it. “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” — Abraham Lincoln. In many ways this is the basic activity that all IS/IT employees do on a daily basis. Technology solutions have a tendency to be very darwinian. Therefore, you should start by picking tools that have stood the test of time. Very few technology resources have lasted longer than 4 or 5 years. Tools like
- Step 8: Find an Open Source project that interests you, pick a problem, and fix it. Meaningful contributions to Open Source projects now rank as more valuable than experience with a fortune 500 company and by volunteering yourself to something used by hundreds or thousands of people, you increase your credibility as a contributor to the community. Often contributors get their names listed in the software itself (imagine being able to show a prospective employer you name in the Firefox contributors tab.) It doesn’t have to be software development either, many projects need volunteers to answer forum questions, update documentation, translate it to other languages, or simply test and report bugs.
- Step 9: …and then teach. No amount of experience will develop your skills, help you network, or let you enjoy technology more than passing on the things you have learned. Write articles or blog posts, offer to teach a computer class at your local library, or do mentoring to grade school kids. Sometimes this step can even turn itself into a decent part-time job.
- Step 10: Download the Linux From Scratch book and build your very own custom operating system from source code. You will learn more about how operating systems work than 99.9% of IT professionals do. Doing your own OS build will change the way you see systems and how to protect them. The results of a LFS build is not the system itself (you will probably go back to using Fedora shortly after finishing) but that you will NEVER go back to be just a technology user…
KDE vs. Gnome
Great post originally from http://www.illusionary.com/GNOMEvKDE.html but as the site is no longer up I am re-posting it with full credit to its original author. This “summary” was a surprisingly accurate feel for the overall development process of the two major Linux Desktop interfaces. Specifically this was the overall feeling during the KDE 2.x – 3.5 & Gnome 0.0 – wheneverubuntueffectivelytookovertheproject.x time frame. While these generalizations no longer hold true, they sure make for some entertaining reading to those of us who remember the those days.
KDE
A big room somewhere in Europe with lots of chrome and glass and a great big whiteboard in the front with lots of tiny, neat writing on it. There are about 50 desks, each with headphones and pristine workstations, also with a lot of chrome and glass. The faint sound of classical music permeates the room, accompanying the clicky-click of 50 programmers typing or quietly talking in one of the appropriately assigned meeting areas. (Which of course consist of elegant contemporary white pine coffee tables surrounded by contemporary white pine and fine leather meeting chairs.) Coffee, tea, mineral water and fruit juices are available in the break area.
At the end of the day, *everyone* checks in their code and the project leader does a “make” just to make sure it all compiles cleanly, but it’s mostly only done from tradition anymore since it always compiles cleanly and works flawlessly. When all milestones have been met, and everything has been QA’d, (usually within a day or two of the roadmap that was written up 18 months previous) a new KDE release is packaged up and released to the mirror sites with the appropriate 24-hour delay for distribution before being announced.
KDE developers are generally between the ages of 16 and 25, like art made of lines and squares and the colors white and black. When/if they finally stop taking government subsidies and get around to getting “real jobs,” most of their salary will be taken in taxes so the socialist government can subsidize the care and feeding of the next generation of KDE developers, just like it did for them. A high percentage of KDE developers, during their mandatory 5 years of government military service, crack from their years of cultural dullness and flee Europe to become terrorists for the sheer joy to be found in killing random strangers for no discernible reason.
GNOME
An abandoned warehouse in San Francisco, kitted up as for a rave, electronica playing at 15db louder than “my ears are bleeding and I’m developing an aneurism” volumes and the windows all painted over black so that the strobe and spotlights and lasers can be seen better. Computers, mainly made of whatever stuff has been exchanged for crack or scavenged from dumpsters behind dot-bombs, are scattered around on whatever furniture is available, which also consists of whatever stuff has been exchanged for crack or scavenged from dumpsters behind dot-bombs. There’s no break area, but you may be able to bum a beer (or more likely something harder) off of one of the developers hanging around, and they will probably be too jacked up on X, coke, acid, heroin, ether or all of the above to notice that you’ve taken anything.
Development strategies are generally determined by whatever light show happens to be going on at the moment, when one of the developers will leap up and scream “I WANT IT TO LOOK JUST LIKE THAT” and then straight-arm his laptop against the wall in an hallucinogenic frenzy before vomiting copiously, passing out and falling face-down in the middle of the dance floor. There’s no whiteboard, so developers diagram things out in the puddles of spilt beer, urine and vomit on the floor.
At the end of the day – whenever that is since an equal number of programmers will be passed out at any given time – or really whenever someone happens to think of it (which is rarely), someone might type “make” on some machine somewhere, with mixed results. Generally nothing happens, so he/she shrugs his/her shoulders and wanders off to look for someone who might have more pink/black-striped pills. Once in a great while, generally in the unpleasant time between the come-down from the last thing they took and before whatever it was they took just now comes on fully, someone will tar up a bunch of random files and post it on a website someplace it as the next GNOME release, usually with a reference to some kind of monkey.
GNOME developers rarely live past 25 and prefer “alternative” art – generally stuff made of feces that’s “too edgy” for most people to “understand” or “like.” Core GNOME developers are heavy Ketamine users. The bodies of GNOME developers can often be found in dumpsters or floating face-down in any sufficiently large body of water.
Copyright 2002, Derek Glidden.
A Part of the Maine
Even if I knew that tomorrow the world would go to pieces, I would still plant my apple tree.
-Martin Luther
While checking one of my WordPress sites I noticed an update for one of my favorite plug-ins, The Events Calendar. Everything was broken after the update so I when to the support site to get things running. Long story short, I got the site working again based on the support recommendations they had but regardless, some functionality was still missing. The reason for this was related to a huge shift in the underlying focus of the WordPress post design.
the issue you state about other plugins integrating has more to do with WordPress being in a period of flux between having everything be either posts or in its own table and authors fully adopting custom post types. The core WordPress team is placing a heavy emphasis on CPTs and most major plugin authors are moving over… As more and more plugins make the move, the integration you want to see will return in a much more powerful and controlled manner.
–Shane Pearlman
The Events Calendar has converted over to a new design method called Custom Post Types (CPT) whereby individual modules can define their own post “types” instead of adding functionality to default post type already available in WordPress.
This drew my attention because the new version of The Event Calendar provides a “Professional” version, with more functionality, that can be purchased. I haven’t actually seen much software in the WordPress universe that followed this model (and I don’t believe The Event Calendar did until this new update occurred.)
My concerns were confirmed with some web searching:
Custom post types aren’t really meant for that use [¦] Custom post types are great for things that are more or less catalogued: products (in an e-commerce site), listings for a real estate site, etc. For regular content creation as described [by Chris], you can already do [that] by using custom taxonomies and/or stylesheets to make post templates.
Some part of the WordPress team has been pushing these these CPT’s and it looks like they have been doing it primarily to capitalize on the success of a Free Software program. I suspect that most developers who are interested in focusing on this kind of feature set are probably not Free Software developers but are, instead, quasi-open source developers running Macs who would be making iPhone apps if they knew something more useful than PHP.
This kind of monetizing has become massively popular with the success of Apple’s App Store and Google’s Market. A significant number of developers who have built very popular software stacks on top of Open Source applications are looking for ways to turn that work into cash flow, and I don’t blame them. That said…
…I really don’t like something about it. Maybe it is because I left a “free” blog application because it stopped being free (I learned a valuable lesson between Free Software and free software and I still have a bad taste in my mouth about it.) Maybe it is because I have actually contributed work to a number of WordPress plug-ins and would NOT have done so if I had known my efforts were going to help someone else make money. Maybe it is because the new version of The Events Calendar actually broke a lot of functionality in the name of changing their platform model to a for-profit design and now I have to use an unsupported version of the software until I find another or I write one myself.
Whatever the reason, Open Source software is loosing something of itself if this is actually the intent of their focus, and we are all the less because of it.
Linux is Magic
Any sufficiently advanced technology is indistinguishable from magic.
–Arthur C. Clarke
It has been entirely too long since I last ranted about how truly amazing Linux is. I have three different problems in the last 24 hours that all resolved themselves via a fairly simple Linux hack. There is some of links that were useful for resolving my problems:
- Convert MS/Word to PDF OpenOffice/LibreOffice macro for automated doc to pdf conversion. Use a simply bash script to use call the macro without starting a GUI instance of oowriter.
- wvWare & antiword — More examples of MS Word command line processing.
- testdisk — Boot-able Linux CD Rom for fixing broken partition tables, corrupted MBRs, and recovering lost files. I used to have to do this by hand with fdisk but testdisk makes it MUCH MUCH easier!
- Repair Broken Grub Multi-boot — Stupidly simply tutorial for using Yast to repair a broken Grub install on OpenSuse. Includes information on fixing the Windows boot options for Grub as well.
- zipsplit — Got a zip file too large to upload/transfer/email? Use zipsplit to split the zip file into multiple files base on size. Careful, the size is specified in bytes so a 300mb files would be split like zipsplit -n 300000000 myfile.zip. BTW it is significantly FASTER than re-zipping a file or even unzipping a file.
Am I Really Supposed to Believe…
That a company can be a technologically innovative, cutting edge, information driven entity when I get emails from them that have this on the bottom?
NOTICE: This message is covered by the Electronic Communications Privacy Act, Title 18, United States Code, Sections 2510-2521. This e-mail and any attached files are the exclusive property of Pictometry International Corp., are deemed privileged and confidential, and are intended solely for the use of the individual(s) or entity to whom this e-mail is addressed. If you are not one of the named recipient(s) or believe that you have received this message in error, please delete this e-mail and any attachments and notify the sender immediately. Any other use, re-creation, dissemination, forwarding or copying of this e-mail is strictly prohibited and may be unlawful.
Does anyone in the world seriously believe that putting this crap at the bottom of am email actually protect them from ANYTHING?
Players win games, teams win championships
Some thoughts & quotes from John Maxwell’s “Equipping 101”
The most expensive employee isn’t the highest paid one, but the least productive one.
Attitude is:
-The advance man of our true selves.
-Our best friend or our worst enemy.
-Is more honest and more consistent that our words.
-Is the thing that draws people to us or repels them from us.
-Is the librarian of our past.
-Is the speaker of our present.
-Is the prophet of our future.
People become like their models. Who are our leaders models?
Finding good leaders is like mining for gold, you have to dig out 2 tons worth of dirt to find it but once found pays for all of the work.
You can tell a persons character by his/her relationships.
Finding talent in a business is no different than finding talent for a professional sports team. You have to recruit, scout, and draft the best you can find. Eventually, you will have to pay for that talent or risk loosing it; so stop investing in players that don’t grow.
Leaders attract potential leaders!
An organization’s Growth potential is directly related to its personnel potential.
As a potential leader you are either an asset to an organization or a liability to it.
This Too Shall Pass
The following are some of my favorite excepts from O.G. Mandio’s “The Greatest Salesman in the World.” They are broken down by scroll number the quote comes from. It is a short book that is really more of a “guide for living” than a “guide for selling”.
Scroll Number I:
“Time teaches all things to him who lives forever but I have not the luxury of eternity.”
“Failure is man’s inability to reach his goals in life, whatever they may be.”
“…the only difference between those who have failed and those who have succeeded lies in the difference of their habits… I will form good habits and become their slave.”
Scroll Number II:
“I will love the ambitious for they can inspire me! I will love the failures for they can teach me. I will love the kings for they are but human; I will love the meek for they are divine. I will love the rich for they are yet lonely; I will love the poor for they are so many. I will love the young for the faith they hold; I will love the old for the wisdom they share. I will love the beautiful for their eyes of sadness; I will love the ugly for their souls of peace. I will great this day with love in my heart.”
Scroll Number III:
“So long as there is breath in me, that long will I persist. For now I know one of the greatest principles of success; if I persist long enough I will win.”
Scroll Number IV:
“I am nature’s greatest miracle. Vain attempts to imitate others no longer will I make… I will begin now to accent my differences; hide my similarities.”
Scroll Number V:
” I will live this day as if it is my last… I will waste not a moment mourning yesterday’s misfortunes, yesterdays defeats, yesterday’s aches of the heart, for why should I throw good after bad.”
” I will avoid with fury the killers of time. procrastination I will destroy with action; doubt I will bury under faith; fear I will dismember with confidence.”
“Henceforth I know that to court idleness is to steal food, clothing, and warmth from those I love. “
” This day I will make the best day of my life. This day I will drink every minute to its full. I will savor its taste and give thanks. I will maketh every hour count and each minute I will trade only for something of value. I will labor harder than ever before and push my muscles until they cry for relief, and then I will continue.”
Scroll Number VI:
“Today I will be master of my emotions… Weak is he who permits his thoughts to control his actions; strong is he who forces his actions to control his thoughts.”
“If I feel all-powerful I will try to stop the wind. If I attain great wealth I will remember one unfed mouth. If I become overly proud I will remember a moment of weakness. If I feel my skill is unmatched I will look at the stars.”
Scroll Number VII:
“I will laugh at the world. No living creature can laugh except man.”
” For all worldly things shall indeed pass. When I am heavy with heartache I shall console myself that this too shall pass; when I am puffed with success I shall warn myself that this too shall pass. “
“Never will I allow myself to become so important, so wise, so dignified, so powerful, that I forget how to laugh at myself and my world.”
Scroll Number VIII:
“Today I will multiply my value a hundredfold… To surpass the deeds of others is unimportant; to surpass my own deeds is all.”
“I will commit not the terrible crime of aiming too low. I will do the work that a failure will not do. I will always let my reach exceed my grasp.”
Scroll Number IX:
“…dreams are worthless, my plans are dust, my goals are impossible. All are of no value unless they are followed by action. I will act now.”
“Never has there been a map, however carefully executed to detail and scale, which carried its owner over even one inch of ground.”
“I will not avoid the tasks of today and charge them to tomorrow for I know that tomorrow never comes. Let me act now even though my actions may not bring happiness or success for it is better to act and fail than not act and flounder.”
“I will act now… When I awake I will say (these words) and leap from my cot while the failure sleeps yet another hour.”
“Tomorrow is the day reserved for the labor of the lazy. I am not lazy.”
“This is the time. This is the place. I am the man. I will act now.”
Scroll Number X:
“Guide me, God.”
The book itself has got me thinking about writing down the outline for my own personal philosophy. I am not talking about a religious creed or a statement of beliefs but a guide to define the philosophy of life I would like to follow. In ancient Greece, and to a lesser extent in later Roman cultures, it was common for the upper classes to adopt a philosophy of life. In fact parents sent their sons to schools of philosophy, like Stoicism and Asceticism, partly to acquire such a philosophy.
And now for something completely
Working on an install of kubuntu that is farily non-standard and my lvm configuration caused grub to go totally insane. So are some notes I am posting from the live CD (that doesn’t have lvm configured.)
If separate /boot
$ sudo mount /dev/mapper/Qmail-root /mnt
$ sudo mount /dev/sda1 /mnt/boot
$ grub-install –root-directory=/mnt /dev/sda
And here and here are some specific grub2 install information for Ubuntu.