Showing posts with label IIT. Show all posts
Showing posts with label IIT. Show all posts

Monday, January 17, 2011

TWU: week 2, day 1 (dev room)


The controller (in MVC) translates user actions into business logic actions. Keep controllers small, and be consistent in how you split them up.

The god object smell is too many responsibilities in one object.

A book that we (and you) should absolutely read as soon as possible: Working With Legacy Code by Michael Feathers.  We also discussed books by Kent Beck, which are also recommended reading.

A region in C# is for use with Visual Studio to collapse and expand views of code.

The refactor called Sprout Class is to extract a class out of an enormous file of code, so you can test the little extracted class. Future TWUers: minor refactorings like this will become part of your thinking, rather than a separate concept.

"Test-friendlies" are collaborators that you can trust and directly instantiate. Encapsulation promotes maintainability. I asked a question about YAIGNO vs elegance and where on the scale one should fall. A trainer answered that "This is a debate that you'll be having with yourself for the rest of your career." So just keep that in mind.

It turns out that "Try to make the code represent the domain that you're writing in" means "When you go to the codebase, you should see the same terms that the client uses." I didn't know in what way the code should represent the domain! I thought that he meant in structure... but now that I know that he meant key terms, it makes more sense. This is different from domain-specific language even though the term sounds similar.

Us TWUers may have the honor of being able to read (and give feedback on) a chapter on encapsulation that Jim is submitting to the next TW Anthology.

We did a short pair-programming exercise on implementing the class Rectangle, and another one on implementing the class Chance and making its not() work. This is basic stuff, but it was more to teach us about pair programming and understanding logic flow and requirements than anything else. I think the assignment did its job admirably.

Packages and naming of packages: I somehow exited university with no grasp of how or why. Now I know both, at least somewhat.

"If you use inheritance, use polymorphism." "Inheritance is very costly, very expensive. Make sure that you're getting something for it."

Value objects are: mutable, easier than immutable, passed by value, and provide seams for testability. Tomorrow we learn about source code management.

Identity/compare functions should be reflexive, transitive, symmetric, and consistent. (If they aren't, is it on purpose?)

If you use Visual Studio, you will probably benefit from using the Resharper plugin.

Future TWUers:
You will want a notebook during the first two weeks of TWU. You can find them in the red cabinet near the big printer in B1, or just ask around.
Also, you will rapidly become a power user of IntelliJ, but the learning curve (for both program structure, and keybindings) is steep and may feel unpleasant. Give in to the power of option-shift-A for accessing the refactoring menu. Resist the urge to navigate by mouse. Ctrl-B will go to the originator of the variable/method/class which you currently have highlighted. To pull up the rename menu, use shift-F6. Avoid renaming things without the rename menu if they are in wide usage.
Play around with git and svn a bit. You can make yourself a github repository and experiment with it, then delete it if you want. If you are assigned a PC by 8600, strongly consider getting it dual-booting some form of *NIX, and/or run a virtual machine, depending on your preferences. This will affect your security arrangements but it can be worked around- just ask the help desk people; they're excellent. 

I am having some difficulty adjusting to using a Mac, but I know it'll be worth it.

"If you don't know where to put behavior, maybe you need another class." <- this was very helpful to me. Also, "Don't expose size unless you have to; use iterator." (if you're using size to iterate over something)

Sonar makes reports on metrics of code.  It is very useful for getting an overview of a codebase too large to read ("thousands of classes"). In smaller codebases, it help you monitor your test coverage. You want to install Sonar on your ci (checkin) server in such a way that when someone pushes code to your repository, your CI server will re-build the project and then trigger Sonar to run.

   * problem : our fix (in the practice codebase)
   * loop doing too many things : split loop
   * feature envy : move method
   * too many parameters : extract class (created History class)
   * magic numbers : constants i.e. express intent by using variable names
   * temporary variables : inline
   * violating law of Demeter : create getter in Movie for title instead of calling though

Law of Demeter - only talk to your immediate neighbor. too many calls chained is called a train wreck.


minGW, cygwin, and puTTy are all *nix commandline emulators. Of the three, I prefer puTTy for its UI, but they're all pretty equivalent.

The trainers recommend that analysts should look into software which creates wireframes quickly and easily, rather than mocking them up in Illustrator. For these things, you need intermediate steps or the client will mistake a picture of the thing for the final object.

There's a google app called browsersize which helps you test your webpage in different browsers and monitor sizes etc so you can see where the fold goes.

Tuesday, December 28, 2010

Alumni giving and why it's not perfect

fromLinda Goldstein
toannualgiving@iit.edu

dateTue, Dec 28, 2010 at 1:43 PM
subjectRe: IIT Students Need Your Year-End Support!
mailed-bygmail.com
Images from this sender are always displayed. Don't display from now on.
hide details 1:43 PM (0 minutes ago)
Jason Smith,

Have you considered trying to institute a program where alumni can give to specific students/labs in a manner similar to DonorsChoose or Kiva? Because frankly after seeing the failures of the Financial Aid office during my time as a student, I doubt that donating my money to IIT's alumni fund is a good use of it.

Linda Goldstein
- Hide quoted text -


On Tue, Dec 28, 2010 at 7:31 AM, Jason Smith, IIT Advancement <jsmith31@iit.edu> wrote:
Having trouble viewing this email? Click here


"Knowing that alumni donate each year motivates me to do

my best in class and gives me the drive to succeed."

-Julia Zuag, Second-Year Chemistry Major

Dear Linda,


I am writing to urge you to make a year-end donation in support of IIT students.


Your tax-deductible gift to the IIT Alumni Scholarship Fund will have a direct and immediate impact on IIT students in the upcoming spring semester. Your donation makes possible the resources that our hard-working students depend upon to achieve their educational goals. Fully 97% of IIT undergraduates rely on some type of financial aid.


Click here to support the next generation of IIT innovators and leaders.


Alternately, your gift to your college's general fund will also make a difference for today's students. From graduate fellowships and research stipends, to faculty support or lab and classroom improvements-your donation will be directed where needed most to support IIT graduate and undergraduate students in this challenging year.

Best wishes in 2011 ,

Jason Smith

Jason E. Smith

Director of Annual Giving

The IIT Alumni Association invites you to connect:

Follow us on Twitter Find us on Facebook View our profile on LinkedIn
Safe Unsubscribe
This email was sent to wordymusic@gmail.com by jsmith31@iit.edu.
Instant removal with SafeUnsubscribe™ | Privacy Policy.
IIT - Office of Institutional Advancement | 10 W. 35th St. | Suite 1700 | Chicago | IL | 60616

-----------------

And the response I got:

Hi Linda,

Thanks for the feedback.

Although Financial Aid dishes out the money, the scholarship money is actually assigned to undergraduate students based on a matching system managed by our office, Institutional Advancement, in conjunction with the Admissions office. The IIT Alumni Scholarship Fund can be assigned to any undergraduates earning financial aid that have not been covered by more specific, or restricted, scholarships. Because of this, it is a very important fund for the university.

We try to keep things simple and focused on the web site for now in terms of limiting options. However, you can use the online giving form to designate your gift elsewhere if you don’t like the options provided. Simply leave the designation blank and enter an alternate choice in the Comments field.

If you would like to make a gift today and have it be more specifically restricted, you could designate it to the Department of Humanities Annual Fund (basically a where-needed-most fund restricted to that Dept), or to the Humanities Scholarship Fund (which our office would match with an undergraduate Humanities student). There are also some lab funds I might be able to direct you to, if you have something specific in mind.

Federal privacy laws would prohibit us from showing individual students, but your comment on Kiva and DonorsChoose is food for thought on a possible direction for our web presence.

Finally, in the recent, and ongoing, effort to improve university services for students called Students Speak, the financial aid office was targeted as one of the offices most in need of improvement. Here is there page detailing their efforts in response to the survey results - http://www.iit.edu/financial_aid/resources/student_speak.shtml

Thanks again,

Jason

jsmith31@iit.edu

312-567-7112

Friday, December 17, 2010

Why the IIT bookstore should sell Ubuntu CDs

Here's a place to buy them https://shipit.ubuntu.com/
  • They're cheap for the campus bookstore to buy (like $0.05 each if you buy in bulk), and their maximum-profit (i.e. number sold * price is the maximum possible) sale price is like $3 (my guess) so that's a nice markup profit
  • Many IIT students use Ubuntu therefore there is a possible market (personal experience speaking, here)
  • Downloading the .iso and making your own boot disc takes like two hours and is boring
  • IIT students might buy them, use them, and gain actual skills (important, no?)
  • It looks good when the parents tour
  • Expand into different versions of Linux, like BSD, OpenSuse, RedHat, etc for optimum possible value to IIT students
  • Would make IIT-ACM's job easier (local supply and proof of demand- also increases demand via exposure, i.e. if they're $3 and ACM gives them away for $0, students gain value from ACM)
There are probably other reasons. And some of my reasons might be crap. But I do think that it would be a good idea.

Wednesday, November 24, 2010

what's in the IIT crypto class?

"RSA, DSA, ElGamal, encryption and signature of each. Lots of Modular Arithmetic. Concept work with a number of different other forms of encryption and most recently we've gone over RFID security. A good half the class has been concept work, learning how it's supposed to work."

Hmn. Interesting.

I wish wish WISH that I had 1. known that that class was offered 2. been interested in it while in school 3. TAKEN IT
I'm kicking myself right now. I know that I can learn it all independently with some effort, but structured learning is so useful! And I missed it! Grrr.

Saturday, October 30, 2010

Rspec and pair programming

Friday I:
- pairprogrammed for real for the first time. Ping-pong method == fun
- forgot my root password, (which I've used several times daily for the last month)
- remembered my password
- installed Rspec
- used Rspec
- was amazed at how useful Rspec is
- got quizzed on my (very small) knowledge of SQL and databases

I need to do a lot more writing tests before I can do it quickly and easily but my long-ago JUnit experience actually helped me catch on reasonably quickly... although I may have seemed like a dumbass a few times when I was trying to figure out what should be tested next.

Saturday morning I was one of the judges for the IIT Ethics Bowl contest. It was entertaining and slightly informative. Met a few cool people. I might help edit cases next year. IIT-local competition is much less... controversial and regulated than national competition. Which is not unexpected.

Friday, September 24, 2010

Data entry

Ugh. I might get around to it sometime.

http://library.iit.edu/recommend/

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612
http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672
http://www.amazon.com/GRE-Computer-Science-REA-5th/dp/087891434X
http://www.amazon.com/Regular-Expression-Pocket-Reference-Expressions/dp/0596514271
http://www.amazon.com/Learning-Perl-5th-Randal-Schwartz/dp/0596520107
http://www.amazon.com/Programming-Perl-3rd-Larry-Wall/dp/0596000278
http://www.amazon.com/xkcd-0-Randall-Munroe/dp/0615314465

Two seminars: memory banks and WLAN

I went to two seminars in the IIT CS department on Thursday. It was just me and about fifteen grad students, a couple professors, and maybe a few confused undergrads. The talks were over my head, but not far enough over that I didn't understand them; just far enough over that I didn't fully grasp the context in which the points made should rest.

Talk 1: controller/hardware level memory allocation, and the correct (best worstcase scenario) way to redirect addressing functions between banks (because a bank based on an 8bit system with a 16bit address, which is the current norm, ends up only having 64KB of address space, and therefore there must be more than one bank... ) There was some discussion on NP hardness. Now, I had a bit of an introduction to NP[n] with Nazli and databases, but it was cursory. Here, have a semiuseful wiki page. http://en.wikipedia.org/wiki/NP-hard

There was a debate about how this scheme works with vortexes. I don't know what a vortex is in this context; I'm under the impression that it's a pattern of behavior of a hardware system, or possibly an equation describing the behavior of a bank-selector-direction planning schema. Some googling brought up these links.
"The "Vortex" processor is a general purpose CPU with a novel architecture and instruction set." http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4137031&userType=inst
"Vortex is a language-independent optimizing compiler infrastructure for object-oriented and other high-level languages." http://www.cs.washington.edu/research/projects/cecil/www/vortex.html

Talk 2: WLAN, network access points, accessibility, and algorithms (and business plans!) which will enable some users to be hop points, i..e transfer traffic through themselves (like using your smartphone to provide a mini wifi network for the guy with the netbook next to you on the train) in an automated way which compensates the guy with the phone for providing access to the guy with the netbook.

Calculating how much someone should be compensated for how much bandwith (and he didn't even mention battery life issues) and how to auto-sense things like which device is closest to the network connection point and how to minimize the number of hops... how to make a grid of access towers such that they're on optimal frequencies for not interfering with each other (because you know that the main wireless frequencies overlap with each other, so you shouldn't have a tower broadcasting on frequency 1 next to a tower broadcasting on frequency 1... much better to have a 1 next to a 4, etc.)

There were graphs showing optimal arrangements and equations showing how the interference amount was calculated. Throughput tradeoff with interference, charts of data. MUCA, MICA, RC, ADJ. (what are those? In context?) Company-set limits on maximum transfer point usage, etc to keep the cost curve in the right place. Large graph of user benefit, transfer point cost, transfer point benefit, and company benefit/cost...

I have seen the future, and it's based on equations.

Maybe you can get more out of the lecture descriptions than I can.

There are two more next week which I won't be able to go to because I'll be at #ghc10
Persistent links here:

Tuesday, September 21, 2010

IIT ACM mini job fair

SB104, 5:15 pm Tuesday Sept 21, 2010

Dr. Grossman:
A major that sounds like you used to be a CS major, failed out, and picked this instead, is a bad thing. Examples: Computer Information System, Internet Management, (yadda) (and presumably my major, too- although I was never a CS major because I only realized that I wanted to be one in my sophomore year, which was too late to switch.)
Work experience is a big plus (duh)
Interview question: "how have you handled failure?" (My answer: with more research, more man-hours, and terrible coffee.)
There are 15 people here, including all presenters.

Bruce Mueller is next up: his job is to pimp the CMC.
"I've hired thousands."
"Always put the company name and job title in your resume."
(Mueller speaks in an assertive and aggressive manner.)
"More and more companies are using lunches and dinners as part of the interview process." This is part of pimping the CMC's workshops- some of which I think are useful! (I'm sorry, but any CS company that tries this will go out of business from lack of interested talent. Who cares about which fork you use if you use the wrong method?)
"Research has been done on this." i.e. on the 30 second rule of meeting people and forming an impression. (Show me the citation and I'll believe you.)
"How many hours have you spent studying? And it all comes down to a resume and thirty seconds. I know, it's not fair." (Do you also know that it's dumb? And perpetuated by HR flacks?)

Grossman introduces Paula Laurent, a nice black lady who looks more or less my age- she used to work at TransUnion and is now in for her Masters and PhD (?) at DePaul. Rocking! She explains the Google interview process (which I more or less knew because of Dmitry and Roman, but which is good to have a refresher on): preliminary contact, 3hr coding interview over the phone, then 2 in-person interviews (they fly you in!)

Mantas talks about his employer, Backstop Solutions. www.backstopsolutions.com
60 ppl work there, 20 of which are developers. They've been around 8yr, and the company is worth several million.
"The many things you can do to instantly fail yourself from an interview."
Backstop employees need to be good at teamwork and seem like they will be friends with the people at the shop. They get 100s of resumes for every open spot. "Everyone in the company looks at resumes."
"If you lie or exaggerate on your resume, we will tell other companies about it." (How? Why bother?)
Learn about B-tree vs. binary tree if you want to work at Backstop. Also, write your own recursive list.
"The majority of people who come in [to interview] can't code to save their life."
"If you put C on your resume, you should be able to outline malloc during your interview."
Mantas laughed at himself a little and called his talk "super depressing." But it really wasn't... it was informative, though.
In 4-6 mo new employees at backstop are considered "trained." (and therefore they don't want to fire anyone- that's a huge loss of investment!)
They're hiring >5 people and expect to get ~500 resumes at the career fair. Last time, they followed up on 4 and hired none.
"If you're good, we'll hire you" seems to be the theme (and the unspoken second part of that is "but practically no one is 'good' ")
When it comes to resumes, Mantas says, "we're going to tear upas many as possible as quickly as we can."

Ori talks about working at Orbitz. Orbitz employs about 800-1000 people, he says. He met with them at a Fall career fair, was offered a job in November for after graduation... Orbits likes lots of lead time, he says.
Coding competitions = win; they make you stand out. Check out bit.ly/orbitz2010 for some awesomeness. (This link appears to be broken. Did I copy it wrong?)
ACM helped me, he says. It was a launching point, a meeting people place, a way to interact with faculty.
In the last 6 months, Orbitz hired 5 IIT grads. This implies that they might be willing to hire more.
Orbitz is casual dress, ori says, and people tend to leave at 5pm. There's a focus on pacing and not having big all-night last-minute pushes.

There are 21 ppl here, including 7 event organizers/presenters.

Vinny works at CME! (Mercantile exchange) He brought swag- fancy pens and fancy keychains.
vinny.badrinathan@cmegroup.com
"I write a lot of tools for myself."
"If you're good, we'll hire you."

Dr. Grossman discusses the structure of learning CS. When it comes to specific skills, he says, "There are too many and they change too often," (which all the presenters agree with) so IIT teaches none of them; only "basics" which don't change so much and are nececcary for understanding.
If a professor wants to add a course, he says, first they have to "tie it to a top ten university." Meetings sometimes include arguing about whether a university is in the top ten. "If they're doing it, we'll do it." (I wish he hadn't implied that the IIT undergrad studies committee does no original research - or local or IIT-specific situational research.
Dr. Grossman says that you shoudl look forward to a 50-70 hr workweek, and enjoy what you do. "Who is that kid? He's living here!" is the goal, he says. (He seems a little manic...)

Walk-on presenter Josh Haycraft of InStep Software (IIT CS '06) jhaycraft@instepsoftware.com
4 IIT grads were hired at InStep this year.
Instep has 50 employees in the US and 50 spread through China.
They write software which energy companies use- tracking and predicting generator lifespan, etc. Lots of databases.

Dr. Evens offers her services as a resume checker. evens@iit.edu
Dr. Grossman offers his services as a resume checker (but on a strictly limited basis) grossman@iit.edu


Monday, September 20, 2010

Clear internet vs. Ubuntu: round 1

Basic research turns up that many other people have had this problem (duh) and there are even some working solutions.

Solutions:
1. Run Ubuntu. Make a virtual machine to run Windows.
http://ubuntuforums.org/showthread.php?s=4c54d9928910267a2e0566113d05a89b&t=1243159&page=2
Downsides: resource-intensive to run, time-intensive to set up.

2. use the Clear "hotspot" (i.e. it makes wifi from 4G for you) ...turn it on and it works. elegant.
downside: heavy to carry, so only an at-home solution. Gotta buy (or rent) the hotspot from Clear.

3. fiddle with ndiswrapper forever (no one has gotten this working yet, I think)

4. Something something Moblin http://en.wikipedia.org/wiki/Moblin (I don't understand this one and I don't think that the person discussing it actually got it to work)

5. Something something VMware (see 4 for commentary)

[interjection: OMG SO MANY EGOTISTICAL and ignorant post=newbs]
[sorry about that, it's just driving me a little mad]

It seems clear that Clear modems work fine with *NIX boxen, both through wifi and ethernet. (Clear's website FAQ states that their modems work with the Linux OS, and the forums sometimes list a modem as an easy alternate-route solution to the problem)

6. wvdial http://ubuntuforums.org/showthread.php?t=843973
Yes, this is a long thread.
Yes, this addresses a specific provider in the UK (and my problem addresses a problem with a provider primarily in Chicago)

I would like to take a moment to laugh at this statement. "I general I try to avoid software which might break my system."
Yes, me too. I always try to not break my system. But everything we use in this life is subject to rm, so try to not be too paranoid. If we didn't ignore the warning labels, we wouldn't be geeks. geeks/scientists/intelligent/human?)

As a side note, I think it's kinda cool that the IIT network added my MAC address to their approved list in such a way that I don't have to re-register my comp (running ubuntu on the school wireless for the first time, but ran Vista while logged on previously)

7. According to various people posting at http://ubuntuforums.org/showthread.php?t=843973&page=3
it seems that NM 0.7 (anmd possibly more current versions, although those were probably not yet developed when this thread was established) may be able to fix this problem as a more or less plug and play kind of solution, and (if things go wrong) will restore previous settings when it's uninstalled.
http://projects.gnome.org/NetworkManager/

(As everyone has discovered before me) "plug and play" is bullshit. Rather, it's what happens after a whole bunch of geeks work out ways to make things work, probably by typing green text into little black boxes. If you are a geek, plug and play is a convenience on your way to trying to solve your own black box problems, not an expectation.

It's also kinda amusing that the terminal box is a black box, i.e. contains non-understood inside bots. Hopefully that's generally not true... also, more recent versions of Ubuntu have the terminal box transparent purple by default. :p Pretty, but less humorous.

Mostly unrealted: vnstat is a cool little thingie with which you can monitor your internet usage. (useful if you have a company-imposed cap on your usage)

Pages 7-15 seem to be newbs either giving thanks for the fix, or asking for clarification on something that tripped them up.

8. Gnome-PPP
Just don't ask.

Apparently "Three" is a pretty big internet provider across the pond. Always good to know these things, I guess.

9. umtsmon
http://ubuntuforums.org/showthread.php?t=843973&page=12
I don't care I don't care I don't care

People keep mentioning setserial.

Right. research done. Conclusion: I don't know why people use emoticons of someone playing a guitar.

Other (possibly useful, but not to me) links
http://www.dhanapalan.com/blog/2008/10/09/huawei-e169-3g-modem-on-ubuntu-804/
http://forums.whirlpool.net.au/archive/1046813
http://www.linuxwimax.org/ (awesome!!)
http://crazyaboutubuntu.wordpress.com/huawei-e169g-hsdpa-usb-stick-on-ubuntu/

Cool glossary chart of sysadmin terminology http://bhami.com/rosetta.html

There may be a part 2 when/if I make a solution for myself.

Wednesday, September 15, 2010

Three SQL books

In the main IIT library, there is a Computer Science section. It is woefully out of date and in general looks like something that you'd find in an abandoned bookstore, but as I was walking through it to sit down at a little table by the window with my new GRE prep book (and that's an entirely different story), I saw the SQL section.

I am uncommonly fond of SQL. Blame Dr. Nazli, who is a ridiculously good professor. http://www.ir.iit.edu/~nazli/

The three books are:
SQL Hacks by Cumming and Russel http://www.amazon.com/SQL-Hacks-Andrew-Cumming/dp/0596527993
SQL Cookbook by Molinaro (O'Reilly) http://www.amazon.com/Cookbook-Cookbooks-OReilly-Anthony-Molinaro/dp/0596009763
SQL Power by Hess http://www.amazon.com/SQL-Power-Comprehensive-Kenneth-Hess/dp/1598632124

I have not actually read these books. At most, I've skimmed them. Read the bits that looked interesting to me.

The Hess was published in 2007. That makes it old. It's kind of like a textbook, but a textbook which takes longer to say things than I think it should take to say them. In chapter 7 it goes into the basics of granting editing/admin privileges in databases, which Nazli didn't actually cover but which I picked up by running into it in use (and knowing that it MUST exist, right?)

SHOW GRANTS is so oldschool that it hurts. It's still nice to see it in print (not just on the internet.)

Nazli's teachings were wonderful, but limited; since we only ever worked with one database at a time, she only mentioned USE in passing, which (from my only slightly removed yet much more haughty viewpoint) I think is somewhat comical.

The longer and more complicated that queries get... the better. Well, not exactly. It's certainly better to get only the data out of your database that you want to get.
And queries are much better than doing it by hand, ha ha.

I guess it's the skill beyond the one that used to screw with me in middle school- translating long word problems into sensible, accurate algebraic equations that can be solved.

Oh, gods, CROSS JOIN. I'd forgotten about that one. In general, it's not useful unless you need ot do permutations. But sometimes you do, and I guess that's how you do it.

Batch data loading - possibly that is the cool part of databases. From what I understand, it's all about how to get the data from its current form- possibly its raw form- and load it into your database where you want it. Perl is your friend here. (I need to get better at Perl. I know just enough to write Hello World and recognize RSA encryption. Not the best skillset out there, but improving it is what sounds like fun to me.)

Chapter 8 goes on about different keywords as if they're new or something. I guess they might be. This would be a pretty ok textbook for an introductory class taught to non-CS majors. Or at a public school (hello, IIT snobbery). I can see why it's so cheap on Amazon.

Ch 9 is about Views. Maybe I should read that one; Nazli only went over it lightly, and I didn't ace it or anything. I mean... basic stuff, right? It's not like it's in C or something. VIEW generally makes something that's read only- great for when you're piping data to 1.0 web users. ...Yeah, Ruby is better. But the people I hang out with think that Ruby is better than EVERYTHING. Don't believe everything on the internet.

pg. 246 "PHP is my web language of choice." All well and good in 2007 but I think I have to stop reading this book now.

pg. 259 the author describes his first experience with regular expressions.

Appendix appendix how to install things that have had new versions since then and weren't too difficult anyway appendix appendix.

The Hacks book looks interesting. It's also copyright 2007, but it looks worth reading. It's not for noobs, and it's not a textbook. More like a level 2 mid-level book, with an index that lets you skip to what you want. (Did I mention that the index on the Hess was somewhat... awkward? In Ch. 6 there were a dozen lines in the index that read "objective" for some reason.)

I've been reading the Hacks book. It's pretty cool. Led to me reading this mini article on how to corrupt a database while it's running (so that you can then run tests on it). http://sqlblog.com/blogs/linchi_shea/archive/2007/08/29/how-to-corrupt-a-sql-server-2005-database.aspx

In ch. 6, there's a section on processing web server logs. I don't have any current need of it, but it looks fun.

Incidentally, I just now got my SQL Server running. Version 5.1.39, MySQL. I think I had installed it when I was taking that class with Nazli, but it never really worked out and I left it floating around my system unsetup. All better now. Although for some reason I'm getting some serious lag which I have yet to identify the causes of.

Oh, gods. Now it's time for me to look at the Cookbook. (The Hacks book looks neat, but I'm not currently trying to do anything which it covers- it has several specialized topics.)

The Cookbook is copyright 2006. That's horrifying. Hasn't Galvin bought any new books since 07? Perhaps not- the university cut out almost all TAs this semester to save on budgetary thingies. I wonder if the university will be surprised when fewer of the professors publish this semester, the average student grades go down (or suspiciously up), et cetera.

Skim index. First thought: cool, cool, skillbuilding, code snippets.
Second thought: what the hell is a pivot (in the contest of databses)?
Flip to page 349, where the topic is "finding knight values." I have never heard of a Knight Value.

Ahh. They're called "knight values" because, in order to get the "knight values" (your desired result set) you must navigate across the chessboard (database) like a knight does- i.e. kinda zigzag. It's a cute name for a complicated query.

pg 350 That is a fucking complicated query. I need to learn some kind of procedure for coming up with those on command, using nothing but a list of client demands, my own brain, and the database.

Generating Forecasts is another section heading. It sounded complicated but it turns out that, when it comes to shipping, it's not only the Thing To Do, but somewhat easy. ...go read the goddamn thing; I'm not retyping it. Easy doesn't mean short.

"Pivoting" is also known as transposing. Basically, turn rows into columns. (Sounds complicated.) I guess I DO know what that is. We never actually did it, though. Sounds like what we did with C in some lab once.

*complicated is a GOOD thing.

Pivoting. They use CASE and SUM here. It looks relatively easy, although you have to basically custom design it for every case. And what must it DO to your database design? Dear gods. Nazli stressed good dependencies, keys... pivoting is obviously a refactoring mechanism, but if you don't do as part of a larger plan, all of your dependencies will go shoot themselves.

Reading on, things get more complicated and yet strangely more intelligible...

Enough.