Do you want to understand the history of computer science? You might want to start with computer chess.
"If you look at the names associated with advances incomputer chess, you'll find most of the people who founded the entire field ofcomputer science," says Daniel Sleator, Carnegie Mellon professor of computerscience and a founder of the Internet Chess Club. Those pioneers include AlanTuring; Ken Thompson, co-inventor of the Unix operating system; Claude Shannon,inventor of information theory; John McCarthy, inventor of the LISP programminglanguage; and the founders of CMU's computer science department, Allen Newelland Herbert Simon.
Computer chess has been called the drosophila--fruitfly--of artificial intelligence, or AI, research. If you're studying genetics,says Jonathan Schaeffer, a professor of computer science and vice provost ofthe University of Alberta, you start with fruit flies, because they live, mateand die in a few days, and multiple generations of a mutation can be observedquickly.
"Chess--like the fruit fly--allows us to have a controlleddomain where we can experiment with lots of issues in intelligence," saysSchaeffer, who led the team that designed Chinook, a computer checkers programthat seems to be unbeatable, and who also leads the university's computer pokerresearch. "We start with something simple that we can understand, and once weprogress beyond chess, we move onto harder problems."
One remarkable man spent two decades at the center ofcomputer chess research: CMU senior research scientist Hans Berliner (CS'75).It was Berliner who built the first game-playing computer ever to defeat ahuman champion and the first chess computer capable of playing at "seniormaster" level, and it was Berliner who 15 years ago this May awarded theFredkin Prize in Artificial Intelligence to IBM's Deep Blue--the machine,designed by three CMU alumni, that defeated world chess champion Garry Kasparov.
Today, retired and living in Florida, Berliner ischaracteristically blunt. Computer chess was "a research dead-end" as far asartificial intelligence was concerned, he says.
"The whole AI thesis was wrong," Berliner says. "AI researchers thought more knowledgewould do everything." As it turned out, more powerful processors andmachine-learning techniques powered by statistical analysis, not human-devisedrules, were able to crack data-intensive problems in speech, image analysis anddata retrieval.
But although computer chess may not have been the Rosettastone to understanding and simulating human intelligence, those who've studiedBerliner's work say his research was no dead-end.
"He covereda lot of ground, and he achieved excellence in all of those areas," says MurrayCampbell (CS'87), one of the members of the IBM Deep Blue team.
"It would have been nice to say that computer chess ledto a huge breakthrough that allowed us to better understand human language ortranslation, or led to a general model of human intelligence, but it didn't,"Campbell says. "It did lead to a change of mind, a change in attitude, abouthow we approached a large number of problems in computer science. And in thisfield--and this is an important point--Hans Berliner produced something that hadlasting value."
Berliner "never took the easy way," Schaeffer says. As aresult, Berliner "has a legacy of excellent papers that contain insights,algorithms and new ideas that aren't as common today as they should be. Peoplecontinue to reference his work when they realize there are other ways to dothings, and then they point at Hans.
"Most scientists aren't willing to take the kinds ofrisks that Hans would take," Schaeffer says. "But that's why his papers arestill around, while the papers of his contemporaries are long gone andforgotten."
# # #
Taking risks may be embedded in Berliner's DNA. Hisgreat-uncle Emile Berliner invented the gramophone--better known as thephonograph. Although Thomas Edison generally gets credit for inventing recordedsound, his cylindrical records were difficult to manufacture and store. EmileBerliner perfected recorded discs--superior to Edison's records in every way,and arguably the predecessor of all formats that followed, including harddrives and BluRay discs.
Another relative took a risk and rescued Hans Berlinerand his family from a potentially awful fate. Born in Germany in 1929, Berlinerentered public school just as Adolf Hitler was rising to power. The first hourof each of his school days consisted of "religion" (meaning, "Christianity")and "National Socialism." Berliner wasn't allowed to participate in thoseactivities, and he couldn't join his friends in the Hitler youth. "I was toldthat I was Jewish, and they didn't want me," he says. "That was quite a shock,and I guess that's one of those things that sort of grows you up a little bit."
Yet in other ways, Germany was a wondrous place--"probablythe best place in the world," he says--for a child interested in science. "TheGermans were full of inventiveness and managed to produce things that werevery, very good," says Berliner, who remembers having a metal wind-up car thatsensed when it was about to run off of a ledge and automatically steered away."This was a child's toy with a real, working servomechanism in 1935 orthereabouts," he says. "I thought it was fantastic--and it was." Whilekindergarteners in the United States were finger-painting, Berliner and hisGerman classmates were probably "three years ahead" in mathematics. Thoseformative years "had a very positive effect on me," he says.
But the atmosphere in Hitler's Germany promised nothingexcept despair, and Berliner's parents knew it. In 1936, two visitors from theUnited States came to stay with the Berliner family. Seven-year-old Hans wassoon shocked to learn that the family was leaving Germany. A nephew of UncleEmile, Joseph Sanders, had arranged for about 10 members of the extended familyto emigrate to America.
Along with his family, Berliner arrived in theWashington, D.C., area speaking very little English, and that with a thickGerman accent. But he doggedly pursued his studies and would graduate highschool with the top grammar marks in his class. Years later, one of his fellowstudents at Henry D. Cooke Elementary School, Mexican novelist and essayistCarlos Fuentes, vividly remembered Berliner, the "extremely brilliant boy" with"deep-set, bright eyes — a brilliant mathematical mind — and an air ofdisplaced courtesy that infuriated the popular, regular, feisty, knickered,provincial, Depression-era sons-of-bitches."
It was a rainy day at summer camp when a teen-age friendtaught Berliner to play chess. "I saw these kids doing this thing on a board,and it wasn't checkers, which I was pretty good at," Berliner says. "So Ilearned the moves, and by the end of the day, there was already someone I wasbeating regularly. I like to say I was never the worst player in the world."Chess was a wonderful way to discipline his mind, Berliner says. "You're forcedto deal with a certain level of reality," he says. "It's up to you to dosomething that improves your prospects in a certain way. If you've trained yourself and you have the proper machinery between your ears, you can thinkquite far ahead." By age 20, Berliner had achieved master status, winning theDistrict of Columbia Championship and the Southern States Championship.
Campbell, the 1977 Alberta chess champion, says Berlinerwasn't a "star" player in the mold of Bobby Fischer or Garry Kasparov, butachieved chess greatness "using a very systematic approach and a lot of hardwork." Now a senior manager at IBM's Thomas J. Watson Research Center inYorktown Heights, N.Y., Campbell says Berliner "had competitive fire" and ananalytical mind that enabled him to beat players "who might very well have beenmore talented than him."
While Berliner could evaluate chess moves six or eight"plies" (one move by one player) deep, real-life proved trickier to navigate.He remembers feeling adrift--that "the future was there, and you didn't have todo anything about it, because it would come to you." After high school, heentered George Washington University to pursue a degree in physics--"amini-catastrophe," he says, because courses were taught by rote memorization,and as his grades plummeted, the draft beckoned. Berliner served his time inthe U.S. Army with the German occupation forces. Throughout his tour of duty,Berliner continued to play chess, including one exhibition where he kept eightgames going simultaneously against one of the top German teams--and won themall.
Upon his return to civilian life, Berliner came back toWashington determined not to re-enter college. Local lumber magnate IsadorTurover set Berliner straight. A fellow European immigrant who knew Berlinerthrough chess circles, Turover told the younger man in no uncertain terms, "Youwill finish your degree." Turover hired Berliner into his company so that hecould pay his way through GWU, though Berliner switched from physics topsychology. "I was so naieve, I thought that when I got a degree in psychology,I could hang out my shingle as a psychologist and start counseling people," hesays. Again fate intervened. A classmate who worked at the Naval Research Labtold Berliner, "We need people like you where I work." Berliner wound upworking for the federal government on problems in what was then called "human engineering" or "engineering psychology"--a predecessor to today's studies ofinterface design.
In chess circles, his ranking kept increasing--Berliner represented the United States at the 10th Chess Olympiad in Helsinki and wonthe 1953 New York State Championship, the 1956 Eastern States Open, and the1957 Champion of Champions Tournament. By this time, he was playing gamesblindfolded. "Two times, I think, I played six games at a time without sight ofa board," he says. "Both times, I got an incredible migraine headache, so thatwas not a smart thing to do."
His reputation grew especially strong in correspondencechess--games played through the mail--and from 1965 to 1968, Berliner was theWorld Correspondence Chess Champion. His first championship is the stuff oflegends; Berliner won 12 of 16 and drew four times, giving him a margin ofvictory three times better than any other winner. He remained the top-rankedU.S. correspondence chess player until 2005, long after he stopped competing.
# # #
Though Berliner never considered making chess hisprofessional life, his career trajectory was less than fulfilling. From thenaval lab, Berliner went to Martin aircraft, General Electric and IBM. "My paywas skyrocketing, but I had an awful lot of spare time," he says. Nearing 40and feeling frustrated, Berliner in 1967 met future Nobel laureate and TuringAward winner Herb Simon at a technical meeting.
In 1956, Simon, associate dean of what was then known asCMU's Graduate School of Industrial Administration, had predicted (to his laterchagrin) that within 10 years a computer would become world chess champion. Twoyears later, with Allen Newell and Cliff Shaw, Simon wrote one of the firstchess-playing programs, known as NSS. Berliner remembers being unimpressed withNSS, which took up to an hour to make a move: "They could play against somehuman who played even worse, but it couldn't come close to beating a rankedplayer."
More than a decade later, Simon remained interested inchess computers. He offered Berliner a job. Berliner turned him down. "If I'mgoing to come there, you've got to put me on the student track," he said.
"Who knows what my thinking was?" Berliner says now. "Iwas at the point where I felt like I wanted to do something with my life--somethingworthwhile." Simon agreed and Berliner was accepted into CMU's four-year-oldComputer Science Department, arriving in 1969 to find a "good" but "chaotic"environment, "up on wobbly feet." The department's founding head, Alan Perlis"was an amazing, wonderful person," Berliner says. "He wasn't perfect and hewasn't always right, but he had a desire for progress and truth that was very,very commendable — he was sort of the guiding light for us and in a sense, thelifeblood of the Computer Science Department."
All new graduate students were expected to pass arigorous 24-hour take-home exam, the Extended Duration Qualifier. Berlinerfound it impenetrable, but in the meantime, Newell allowed him to start histhesis--"because I wanted to work on computer chess," he says.
# # #
As far back as the 1940s, Alan Turing was pointing outthat if games can be described by a series of mathematical operations, andcomputers can execute mathematical operations, then computers can play gamessuch as chess. In 1950, Turing wrote a rudimentary chess program, though helacked a computer capable of executing it.
Newell, Simon and Shaw's chess program was an outgrowthof their Logic Theorist, a program designed to prove the theorems of the Principia Mathematica in a way that emulated human reasoning. Each problem wasrepresented as a tree, with a hypothesis at its "root" and each rule ofmathematical logic represented as a "branch." If a rule was untrue for thathypothesis, that branch was "pruned" and the program went to the next branch.If a rule was proved true, the program went further down that branch to thenext operation. (Today, this is called "traversal" of a tree or graph.) In thatway, the program eventually arrived at a formal proof. Widely considered the world's first"artificial intelligence" program, Logic Theorist generated proofs for 38 ofPrincipia Mathematica's first 52 theorems, including one that was simpler thanthe commonly accepted proof.
For the next 20 years, search trees and "pruning"--using heuristics--formed the basis for most AI programs. Programs that attempted toplay chess, generate proofs, or solve other problems by calculating all knownpositions were derided as using "brute force"; top researchers like MIT'sClaude Shannon declared flatly that brute-force methods would never work.
Chess is particularly useful for AI research because it'sbounded by rules, unlike more abstract problems in speech or vision, Campbellsays. "It's known to be a very challenging game, and it takes intelligence toplay it, yet it's limited in very nice ways," he says. "With chess, you don'thave to 'boil the ocean' to make progress. You can focus on an interestingsubset and make some progress."
Another of Berliner's students, Carl Ebeling (CS'84), nowa professor of computer science at the University of Washington, says that manyproblems in AI research rely on measurements, statistics and analysis, and theresults are hard to tease out. "In chess, it's not hard to figure out ifsomething is working or not. You can't B.S. people. If your program doesn'twin, there may be a lot of reasons why it lost, but it's hard to make excuses."
Alberta's Schaeffer adds that if a researcher is tryingto build an "intelligent" machine, "and it can't even play a simple game suchas chess, then clearly you have a long way to go." In the 1970s, when Schaefferwas beginning his own studies in computer science, "chess was the game, parexcellence, that everyone was researching, and when you looked at thehigh-quality scientific venues, the premier journals, there was only one personin the entire community who was publishing there, and that was Hans Berliner."
# # #
Berliner's first chess program was also his firstcomputer program of any kind. Written at IBM on his own time, it was called "J.Biit"--"Just Because It Is There." J. Biit came to CMU with Berliner and was anearly favorite to win the first North American Computer Chess Championship, butit lost to Northwestern University's Chess 3.0. His next program, written as heworked on his doctoral thesis, titled "Chess as Problem Solving," rememberedthe errors it had previously made and learned to avoid them before beginning anew search. Yet even as Berliner refined the program, called "CAPS," he becameconvinced that rule-based chess programs weren't enough to defeat a humanchampion.
Although their goal was to imitate human decision-making,they left no room for intuition or guesswork. "I had a set of rules that werelimited," Berliner says. "They were the most important things--maybe 80percent--but that's nothing. The other 20 percent includes the things the topplayers know how to do. That's why they're the top players." Newell and Simonkept pressing Berliner to push onward: "Allen would say, 'you're not tryinghard enough--you've got to make up more rules.'"
As he looked for a new avenue for his research, Berlinerlearned the game of backgammon from his father-in-law. Simpler than chess,backgammon requires both luck and strategy; players start with their checkersstacked at three different points on the board and move them based on rolls ofthe dice, and the first player to move all of his or her checkers off the boardwins. Berliner decided to write a backgammon program. At first, it would get toa certain point and then start to bog down. "It kept trying to optimize thingsthat it should have forgotten about," he says. "At some point, you're not justwinning, you've actually won, and your strategy should change at that point--youshould be aware that a transition is coming."
Berliner hit on the idea of using fuzzy logic--still a newconcept in the 1970s--to assign different rules "weights," or "applicationfactors," based on their relative importance at each stage of the game. Now,the program, called BKG, started winning games it would have previously lost.In July 1979, it became the first computer program to beat a reigning worldchampion in any game when it defeated backgammon player Luigi Villa. Despitethe success, Berliner found himself pigeonholed. One of his papers on BKG wasreturned by an AI conference with a note from a reviewer: "Why isn't Berlinerworking on chess?"
But Berliner was working on chess. "A lot of the work incomputer chess was ad hoc--it was done by hobbyists for fun, and never gotpublished," Schaeffer says. "Hans was a scientist, first and foremost. Hetackled chess with scientific rigor, and as he discovered new ideas orinsights, he published them properly--not in weak, mediocre conferences, but atthe top, in the premier journals and conferences."
Campbell was drawn to CMU on the strength of Berliner'sresearch in chess. "I read some of his papers, and that was where I wanted tobe," he says.
# # #
One of the highlights of Berliner's research in thoseyears was the B* ("B-star") algorithm, designed to emulate what he calls the"jumping around" process in human thought. Most tree searches were performedeither best-first or depth-first. Best-first searches find the lowest-cost pathto a goal, going from branch to branch as necessary, while depth-first searchesexplore every branch on a tree to its end until reaching a goal. As Berlinersaw it, both searches had serious drawbacks--depth-first searches wasted time,while best-first searches required a lot of effort to keep track of alternatepaths. Perhaps the worst problem--from his perspective--was that both searcheswere strictly goal-oriented. They had to be arbitrarily terminated or else theywould keep trying to reach a goal, bypassing "good enough" paths while tryingto find an optimal solution. Like the first version of Berliner's backgammonprogram, they didn't know when to quit.
The answer came to Berliner in the middle of the night.Rather than writing an algorithm that searched a tree based on hard-and-fastlimits, Berliner's B* algorithm assigned an "optimistic" and a "pessimistic"score to each node. The algorithm kept searching a branch as long as the pessimisticvalue of the best node was no worse than the optimistic value of its siblingnodes. B* found paths that were sufficient to a task rather than theoretically"perfect" ones--emulating the way that a human chess master will stop when sheor he finds a move that seemed to be clearly the best.
"B* tried to use the power of computers to search in away that was like a rational human being would search," says Andy Palay(CS'83), now at Google. Unlike simple A* "best-first" searches, B* is "a muchmore directed search toward what appear to be the most promising paths," saysPalay, who wrote his doctoral thesis on ways of extending the B* algorithmusing a probability distribution rather than upper and lower ("optimistic" and"pessimistic") values.
It was Palay who suggested applying B* to chess. Thereare between 30 and 60 legal moves at any given point in a chess game, andsearching for those legal moves consumed up to 75 percent of a chess computer'stime. In a chess tournament, each player is allowed an average of only threeminutes to make a move. In the early 1980s, when the fastest processor had a 10MHz clock speed, efficient searching was a key to success. "There's no trick tosolving chess with brute-force searching if you're in a domain that'sconstrained enough," Palay says. "If I can out-search everyone, I win. But lifeisn't that simple. That's why I found B* much more interesting."
Palay talked to Berliner about his friend Carl Ebeling,who was looking for a thesis project that involved hardware. Using thethen-novel technology of very-large-scale integrated, or VLSI, circuits,Ebeling custom-designed a processor to generate chess moves. The resultingmachine, named Hitech, used 64 of these processors--one for each square of thechessboard--operating in parallel; a master control program polled theprocessors and decided strategies. People inside and outside CMU's CSdepartment took turns at a third-floor lab in Wean Hall, wire-wrappingconnections. "There was such an enthusiasm for Hitech that I've never seenbefore," Berliner says. "Everyone wanted to know what the latest developmentswere, and if they could help."
A working prototype was completed in 1984. AlthoughHitech searched smarter, it also employed a certain amount of brute force;Hitech could consider 175,000 positions per second. (A top human player mightlook at one or two moves per second.) In October 1985, Hitech won Pittsburgh'sGateway Open chess competition, earning the rank of "master." That year it alsowon the ACM tournament for chess programs. By 1987, it was ranked 190 in theUnited States and the only computer among the top 1,000 players.
# # #
Campbell was among those working on improving Hitech'ssearch algorithms. As smart and flexible as the machine was, he says there wasa growing feeling that it "didn't have the horsepower" to beat a humangrandmaster.
The field itself was changing. One of the developers ofthe Unix operating system, Ken Thompson of Bell Labs, created his own powerfulchess-playing machine that reached master-level status. In 1982, Thompsonpublished what Schaeffer describes as "an innocuous little paper" that provedthat chess machines improve in direct correlation with the amount of processingpower they have.
After Thompson's paper, "chess research died," Schaeffersays. For many researchers, the race was no longer to create smarter searches,but faster computers.
Besides working on Hitech, Campbell also wascollaborating with fellow grad students Feng-hsiung Hsu (CS'90) and ThomasAnantharaman (CS'86,'90) on another chess-playing computer that became known asChipTest. Like Hitech, it relied on VLSI technology, but it was much faster--by1987, the year it won the North American Computer Chess Championship, ChipTestwas searching 500,000 moves per second.
Danny Sleator remembers the rivalry between the Hitechand ChipTest teams. "The fact that we had two competing chess systems developedat CMU simultaneously reflects a number of important things about the culturein the Computer Science Department," Sleator says. "For one thing, there is atremendous amount of respect for the work of graduate students. The facultygives them the benefit of the doubt, and in many cases, including this one, itpays off. The place is also big enough and tolerant enough that more than onegroup can work on the same problem using different approaches."
In the early days, "there was some goodcross-pollination" between the rival groups, says Campbell, but therelationship deteriorated. "There was some tension that never got resolved, andthere were some hard feelings in terms of the competition between the twogroups," he says. ChipTest evolved into Deep Thought, which won the WorldComputer Chess Championship in 1989. IBM hired Hsu, Campbell and Anantharaman; Hsu and Campbell led development on the machine that became Deep Blue and beatKasparov in 1997.
# # #
Deep Blue was massively parallel, including 480special-purpose chips designed to evaluate chess moves. It also demonstratedconclusively that brute-force computing power could crack tough problems. "Mygreatest regret, to this day, is that Deep Blue wasn't really a 'learning' system," Campbell says. Teaching a machine to play chess the way that humanslearn still hasn't happened, he says. "You can take an existing program and 'tweak' it using machine-learning techniques to play better, but to teach it toplay from next to nothing--how people learn--is still beyond reach," Campbellsays. "I think that's a fascinating thing."
Kasparov claimed to have seen "human intelligence" behind Deep Blue's moves--a statement some interpreted as an allegation that IBM cheated, and which the Deep Blue team said was not true. Berliner says it wouldbe a mistake to assume that a system based on the statistical analysis ofmassive data sets isn't a form of intelligence. "Intelligence emerges just likelife emerges," he says. "You take a bunch of inert chemicals which canreplicate themselves, and they form into a creature. It's the same thing withintelligence. We can talk about something being 'intelligent' when it meetssome certain criteria, but certainly even the dumbest living thing has somesort of intelligence, or it wouldn't stay alive." In that respect, Berlinersays, Kasparov certainly saw intelligence in Deep Blue--but machineintelligence, not human intelligence.
Berliner also sees intelligence in Deep Blue's descendant, IBM's "Jeopardy!"-playing machine, Watson, which he calls "quite marvelous." Just as notable as Watson's ability to answer "Jeopardy!" questions is its understanding of slang and idiom, Berliner says. "I've worked in that area of general intelligence, and it's not easy," he says.
But Berliner being Berliner, he doesn't hesitate to point out where Watson had an unfair advantage over its human competitors. Watson received the Jeopardy! answers in written form and could immediately get to work, while the human players were still listening to and parsing the text. "The computer was way, way ahead in understanding the question—maybe a second or two ahead—so 90 percent of the time, it rang in before the human," Berliner says. "That gives it a tremendous advantage. It was very, very smart to get the answers, but many of the human beings never got a chance to show what they knew."
# # #
Berliner's willingness to question conventional wisdom and preconceived notions—including his own—has led to no small amount of controversy over the years. "I have very high standards for myself," he says. "In the end, the only things we have to offer the world are those standards."
When Berliner decided the work of Russian computer scientist and chess grandmaster Mikhail Botvinnik didn't maintain high standards, he pulled no punches. After concluding that Botvinnik's published results couldn't be duplicated, he accused the venerable old champion of fraud. Botvinnik's fans attacked Berliner, but Schaeffer and others reviewed Berliner's evidence and concluded that Botvinnik indeed massaged his published results to achieve his outcomes. Berliner's 1999 book "The System: A World Champion's Approach to Chess" attracted sharp criticism from a few professional reviewers, but the sometimes very personal attacks left Berliner unbowed.
"A lot of people saw the significant value in what he did," says Campbell, who points out that in both the Botvinnik case and the strategy book, Berliner refused to take an easier path just to avoid unpleasantness. "There's a lot to be said for that. It can be lonely, and it takes a strong personality to be able to do that, and he has that kind of personality."
His former students say Berliner's reputation as a fearless advocate has overshadowed his generous spirit. "Working with Hans was a lot of fun," Palay says. "There was a great deal of graciousness, both on a personal level and a professional level. He was very much concerned with making sure that he was treating me well, not just as his student, but as a person." Palay says he consciously mimics Berliner's style when interacting with his own colleagues.
"You can't become a top-rated chess player like Hans without being competitive and self-confident, but I never saw him as being 'over the top,'" Ebeling says. "He led by example more than anything else. There was a constant attention to detail, and he was always thinking, looking out for the next idea that might work."
Berliner's research legacy "might not at all be guessable at this point," says Palay, though he notes the pendulum seems to be swinging back from purely statistical machine-learning methods in translation and other fields to hybrids that include rule-based search techniques. "Some of the things that he was working on will resurrect themselves over time, as we start hitting walls," Palay says. "Tracing them back to Hans will be difficult, but the seeds will be there."
As computer scientists try to reduce power consumption and face difficulty adapting some problems to parallel computing, they'll look for more efficient search algorithms, Schaeffer predicts—and they'll find that Hans Berliner got there first. "We may find that maybe we don't need all of this massive computing power, maybe you don't need this sledgehammer of brute-force computing," he says, but adds that Berliner's most lasting legacy is his graduate students. "He didn't have many, but they were of very high quality."
These days, Berliner is out of the fray. He doesn't play chess—"once you get to a certain level, you don't enjoy playing chess any more," he says—but he does work on his solitaire game, and keeps records of winning strategies. When the weather's good, Berliner finds peace strolling the beach and thinking.
Before retiring from CMU in 1998, Berliner says he saw a "deplorable trend" among some students of attempting to talk their way around difficult problems instead of performing the necessary research. His advice to today's students? "Learn all the substantive knowledge that you can," Berliner says. "In the final analysis, all knowledge hangs together, and the more you know, the easier it will be to make good decisions in the future.
"Learn something that has value—something quantitative, hopefully. Have something you can do that someone else will want to pay you for—a product. If you don't have that, it's going to be tough for you."ve, I
Jason Togyer | 412-268-8721 | firstname.lastname@example.org