Clever-K: almost scary, but just so awesome.

R

obotics, originally from the Czech word for slavery, is growing into something much more than machines doing simple, mundane tasks. Today, robotics is one of the fastest-growing branches of computer science and engineering. Just read some of the other robotics stuff we’ve covered and you’ll see how diverse and rapidly-changing it is.

Today, we’re going to share an awesome video from Swedish robotics group IDSIA, and their project for the Clever-K learning architecture. Just watch:

MoBeE is their modular system for Clever-K, which helps a robot learn how to use its own ‘body.’

These robots basically are being programmed to grow through infancy and childhood.

(Also, check out that dude’s giant mohawk.)

What’s powering all of this? Computer science. It’s the fastest growing profession in the world, and will probably stay that way for a long time. Computer scientists can do everything from theoretical work, to programming AI, to making smartphone apps. Computer scientists live in the real world, but are at home in the virtual world.

If you’re interested in studying computer science, check out the “Read on” links.

Read on:

NASA’s “Mars Rover Landing” Videogame: More than a fun minigame

E

ven before they infamously shut down the space shuttle program, NASA has been using things like TV shows, YouTube videos, phone apps, and more to make space exploration more popular. After all, it’s where humans need to eventually go if we want to survive in the long run.

Here's one of the final stages on "Mars Rover Landing," where you delicately get the rover to touch down

As a part of that effort, NASA released a minigame on the Xbox Live Marketplace called Mars Rover Landing. It’s a short game which lets a player control the machines which get Mars rover Curiosity safely onto the surface of Mars. The cool part: you do it with the Kinect. And we love talking about Kinect.

But this is just a game, right? Wrong. You can infer a lot of insightful stuff from this move by NASA.

First of all, and maybe most obviously, it means NASA is trying to grow, which reflects the trend for a growing space-technology industry worldwide. Which means that if you’re interested in space engineering, you’re in luck because there may-well be plenty of jobs in the future, for you. Proof of that can also be seen by things like NASA’s other recent projects; the famous asteroid-mining company, Planetary Resources; PSU’s experimentation on the International Space Station; China’s ambitious goals for space and the moon, including mining asteroids just like Planetary Resources plans on doing; and many other space projects around the world.

An early stage, where you guide the lander into the martian atmosphere. Kinect games like this are fun to program, and fun to play.

But this also means something else: videogames have become so big that even the government is using them to get the public’s attention. This makes it clear, just how big the videogame industry is. And while the private market is traditionally very competitive, the rise of indie games and government-sponsored games mean it’s become a common medium of expression.

For you, this means that if you’re an aspiring programmer and videogame designer, by the time you’re out of college you’ll be entering an industry which is even bigger than it is today. And it’s already huge. Just read about some Kinect homebrew programs people have made to get an idea.

Just remember that there’s a difference between playing videogames and making them. Having a 2:1 ratio on an FPS game, or LoL, doesn’t make you a programmer. The reason programmers (especially game programmers) are so well-paid is because programmers are so well-studied. Being an avid gamer definitely helps you make games fun and good, but you’ve got to start programming games now, and practice. And keep practicing.

Mars rover Curiosity is just one of many future space-exploring robots that NASA needs to be designed, built and programmed.

NASA’s release of an Xbox videogame tells a lot about how things are now, and how they will be in the future:

Humanity knows that its ultimate home is space, and maybe another planet, and as resources on Earth slowly diminish, scientists and engineers are looking to space engineering to find a solution.

And not only does space exploration require programmers to control things like Mars rover Curiosity and its other parts, but the growing videogame industry is a great place for programmers to find jobs.

Or make their own.

Read on

  • Mars Rover Landing game on Xbox Live Marketplace.
  • Read about how free college textbooks are becoming easier to get. This is great for future college students studying engineering, as science textbooks are usually at least $100 and can even be more than $200 each.
  • Check out GameMaker, a great way for aspiring game programmers to both learn the basics of programming, and to create advanced games in the GML language. Free, or $40 for an extended version with more capabilities.
  • Check out our Teach Yourself Programming resources page. Links to all sorts of stuff which can help you learn to become a great programmer.

Programming advice straight from OGPC.

T

he Oregon Game Project Challenge (OGPC) takes place every year, and we’ve given it coverage in the past. This year, another group called Getting Smart went and interviewed Wilson High School teacher Chris Bartlow, who teaches math and programming in Portland.

Chris said that these three things are really important for good programming:

  1. The first is that students need to work on sizeable projects in teams at some point in their learning
  2. The second is that computer science is really a special kind of problem solving and that the specific programming language didn’t matter all that much, and
  3. Finally you actually need to sit down and use the programming language to learn it (practice to gain proficiency).

So what do these three things mean for you? Let’s look at them in order.

Working on sizeable projects: Obviously taking programming and computer science classes will help, but there’s more to it than that. A one-term programming class probably won’t be long enough for a huge project, similar in scale to what you’d do in the professional world.

That’s why you need to work on your own projects. Working on independent projects, like smartphone games or custom applications, will help you develop the project-management skills you need for life as a professional programmer.

Computer science as problem solving: Because programming is basically the craft of taking a huge problem and breaking it down into little problems, logic and thinking classes will be very useful for you.

Things like IB Theory of Knowledge or, if your school doesn’t offer that, even just regular math classes will help. But you can take it a step further. Hunt down logic puzzles, riddles, mazes, and strategy games and play them nonstop.

Learning a programming language: While they’re a little different since they’re designed to give a computer instructions, programming languages are much the same as real-world languages. After all, they have grammar (syntax) and vocabulary (statements).

What that means is that if you want to get ahead of everyone else, you need to go out of your way to learn new programming statements, and practice using correct programming syntax. So you need to program. A lot. That’s going to help you more than anything. Try to make one new program every week, even if it’s simple. And try to learn something new every time!

 

These tips come straight from a great programming teacher at Wilson High School, whose team competed at OGPC, so this advice comes backed up by a lot of experience. Get Real recommends you do these as well to become a great programmer. And we also think you should read our ever-growing Teach Yourself Programming series.

You ought to Hopper on board with CS, Kay?

Today is Grace Hopper’s birthday, the OG of computer science. We talked a little about her on Monday, and want to celebrate her birthday (and the end of CSEDWeek) with some fun stories, and by showing you some cool, interactive ways to start learning computer science.

Alan Kay is an American computer scientist who  has made great advances in object-oriented programming and graphical user-interfaces. (If you look around, you might find a video of him talking about Dijkstra, whom he doesn’t seem to like.) He’s got a long list of awards under his belt, and cared a lot about putting computers into everyone’s hands (incidentally, he basically invented the idea of a laptop at the same time). Here, Kay describes computer science and how different minds approach it:

Alan Kay talking about learning computer science. It’s old, but his comparison
to digging to China is interesting.

Learning computer science requires a pretty good handle on problem-solving thinking. And, coincidentally, so do a lot of strategy games. That’s why we think games can be a useful tool for learning CS. Like Kay says, problem solving has more than one dimension. So a game like LightBot, which requires you to creatively solve puzzles, is a great way to learn. And unlike a lot of educational ‘games,’ this one is pretty fun and is actually a legit puzzle game. (And we like legit things.) Also try Manufactoria, a complex and very difficult puzzle game.

You can also watch an interesting TED talk about how to “Dance your PhD,” and how bad powerpoint presentations actually threaten the global economy (awesome). It’s about making complex ideas simple to explain–which might not sound like CS, but is an important thing to be able to do when you’re neck-deep in code and are working with others who are also neck-deep.

The fact of the matter is simple: no matter what you love, computers are going to be a part of your life. (Unless you decide to be the next Grizzly Man, though we don’t recommend that.)

At least knowing how they work is important, because then you can solve your own problems rather than hiring a techie to solve them for you. Consider the flipside of the coin: if CS jobs are some of the highest-paying out there, then they’re also some of the highest-costing for those who need someone else to do it.

Computer science is all about doing it yourself and learning by doing. We recommend looking at some of these links to get you started:

Read on:

  • Check out the Computing: The Human Experience website. If you feel like helping make it happen, check out the Kickstarter page! (Bonus: the Kickstarter page has a cool video about what the project involves.)
  • Khan Academy’s introduction to computer science, using Python.
  • The CS career questions board from a popular community forum called Reddit. And an interesting discussion from the general CS board.
  • If you’ve played the Game of Life, you know it’s pretty fun and has a lot of CS roots. Check out how someone made a Turing Machine in it.
  • NINJA-IDE is a great tool, complete with an automatic debugger, to use while trying to learn Python (which is a great first language to learn).

If you’re reading this, you’ve got a leg up on one of the best computer scientists.

Edsger Wybe Dijkstra (try saying that if you’re not Dutch) is known for a lot of important advancements in computer science, won the 1972 Turing Award, was so cool that the ACM PODC Influential Paper Award was renamed to the Dijkstra award after he won it in 2002, and wrote over 1300 papers that were passed by word of mouth only throughout the world computer science community.

And every one of those papers was written by hand, as Dijkstra didn’t own a computer. Read one of his funnier ones.

In fact, he didn’t quite like the way some people viewed computer science. He said the job of working with computers became “prematurely known as ‘computer science,’ which actually is like referring to surgery as ‘knife science.'”

Edsger Dijkstra. Looks like a hipster, codes like a boss.

There’s a kind of sad truth to this, in that CS isn’t all about computers. As you might know, CS involves a good amount of math and computational thinking, and isn’t totally about actually writing code. That’s why we can have awesome programs like CS Unplugged

There’s no doubt that Dijkstra is a philosophically inspiring dude. He had a great sense of humor and often poked fun at how the CS industry works, such as his with pastime hobby of acting as ‘Chairman of the Board’ of the made-up Mathematics Inc., a company that commercialized mathematical theorems the same way that software companies commercialized computer programs. His point in making this company up was to illustrate how silly it is to “own” a bit of code or computing knowledge.

Dijkstra accomplished all these things and did a lot to influence the computer science world. Thanks in part to him, it’s the way it is today. And he did all this without a computer.

Mapping the human genome is one of the greatest accomplishments of Bioinformantics, the biological branch of computer science

If you’re reading this, you have–or at least have access to–a computer of some kind. And that means you’ve got a leg up on him. You have access to code compilers; free/open-source digital textbooks; online lectures from Stanford, Yale, SETI, TED and others–all the tools someone learning CS could ever want.

Computer science has infinite application. All the knowledge in the world is being digitized, and it needs to be organized and used somehow. Whether you just want to help people in third-world countries, create an innovative robot, design the next great videogame, do research to cure cancer, increase efficiency of our electric grid, or just make a script that prints everything in a folder, computer science is how you do it.

Game On 2.0, at OMSI

For a lot of people, summer time means gaming time. With no school or homework, why do something lame like get a job? (hint: you could buy your own computer if you mowed lawns or something, and then you could teach yourself programming). Well, the folks at OMSI have a pretty fun job. Being that they’re the museum of science and industry, they like to teach people about stuff that includes both those things. Like computer science, and the gaming industry. Wait a sec.

Over 125 playable games and 50 years of gaming history.

Gaming is good for your brain, if you play the right games. Not just puzzle games, either: games like Civilization, StarCraft and SimCity—even World of Warcraft requires goal-setting, data-processing and group-organizing skills.

An argument that certain games are complex and good for your brain would be that it takes very advanced computer scientists to help computers play them. Read about some computer scientists who programmed some AI for the game Civilization 5.

Even mobile games like Angry Birds are being used in physics classrooms. What’s that tell you?

This event will teach you about the culture and industry of gaming, and that means you’ll also learn about the programmers who made the games. It’s worth going to, especially if you’re a programmer who’s inspired by computer games. It’s running through the 19th of September; check out their official page for more info.

Read what I read:

Make your desktop look fancy shmancy

This is actually called "Command Center," and you can google it.

If you have even a family computer, see about making this happen. Installing Rainmeter is really easy, and it’s a safe, open-source program. Basically, it’s a simple program that lets you code and use what it calls ‘configs,’ which are basically desktop widgets that can display all sorts of information.

It can be as simple as a text-based clock, or the fully-interactive command center you see to your right. Every tiny piece of blue text on that desktop means something–hard drive read/write speeds, processor usage, RAM usage, internal temperature, network connection, and so forth.

Today we’re gonna walk through coding your own simple daily calendar, which you can display on your desktop. First, you’ve got to install Rainmeter. It comes with some fancy skins pre-installed. Use them if you want, but why use something you didn’t make?

Once you’ve installed, follow these steps:

  1. Fig1 - What your folder should look like once you've gotten through step 2

    Go to My DocumentsRainmeterSkins, and make your own folder. Call it “ez_calendar” or whatever you want, really.

  2. Once you’re in there, create a new config file by right-clicking anywhere in the folder and going to new>text document. Then, name it “ez_calendar.ini” and be sure the file extension is “.ini” and not “.ini.txt”. If you’ve got the proper file extension, the icon will change from a text file, to the one you see in the picture.
  3. Open it up! You can just open it in notepad, or use the geeky programmer’s notepad, N++. (Named for the C-programming way to increment a variable by one. Because it’s one better than notepad.) You’ll be greeted by a big blank white screen. Beautiful.
  4. First, you’ve got to enter some critical Rainmeter data. Just copy and paste this section of code. This makes it update once every 1000 miliseconds, or once per second:
    1. [Rainmeter]
      Update=1000
  5. Second, let’s insert some meta data. This is useful for websites like customize.org, who collect Rainmeter skins. You don’t actually have to put in meta data if you don’t plan on sharing your config, but it’s good habit:
    1. Organize your code by labeling this section [Metadata]. Then move down a line and enter this stuff in, separated by lines:
    2. The title and subtitle: Name=EzCalendar | The coolest calendar in the world!
    3. The folder you put your config in: Config=ez_calendar
    4. Describe your config: Description=Prints out the date in text
    5. Version 1.0 because this is the first version you’ve made of it: Version=1.0
    6. Put in tags that describe your config: Tags=Separate | Them | Like | This
    7. Make it CC: License=Creative Commons Attribution-Non-Commercial-Share Alike 3.0
  6. Not too bad, right? Next, we’ll make some variables. These aren’t needed either, but will make it easier to edit later on, since you won’t have to swim in code. Especially useful for really complicated skins. You can see that the code is commented with semicolons. These don’t show up after coding, but if you open the code up you can read them. They’re basically notes for future reference. Head this section [Variables]. The rest is pretty straightforward:
    1. RGB Color and Transparency. 255 is 100%: FontColor=255, 255, 255, 255
    2. Any value works, but the name has to match a font installed on your computer: FontName=Tahoma
    3. More is bigger. Test a few values to find one you like: FontHeight=64
    4. FontStyle=NORMAL
      ;Valid values are: NORMAL, BOLD, ITALIC and BOLDITALIC.
    5. FontEffect=SHADOW
      ;Valid values are: NONE, SHADOW and BORDER.
    6. FontFXColor=0, 0, 0, 255
  7. Finally, we’re going to code the actual config. The first section makes the config talk to computer to find the Year, Month, Date, and Day of the week (Go to the Rainmeter Manual and search for “Format Codes” to learn more about that). The second section prints it on your screen:
    ;-----------------------------------------
    [MeasureYear]
    Measure=Time
    Format=%Y

    [MeasureMonth]
    Measure=Time
    Format=%B

    [MeasureDate]
    Measure=Time
    Format=%d

    [MeasureDay]
    Measure=Time
    Format=%A

    ;-----------------------------------------

    [DateDay.meter]
    Meter=STRING
    ;Use these next ones by typing %1, %2, %3 and %4, respectively.
    MeasureName=MeasureDay
    MeasureName2=MeasureDate
    MeasureName3=MeasureMonth
    MeasureName4=MeasureYear
    X=0
    Y=0
    ;These next few inputs use the variables you declared earlier
    FontColor=#FontColor#
    FontSize=#FontHeight#
    FontFace=#FontName#
    StringStyle=#FontStyle#
    StringEffect=#FontEffect#
    FontEffectColor=#FontFXColor#
    AntiAlias=1
    ;Prints the four measures "Date Month, Year (Day of Week)"
    Text="%2 %3, %4 (%1)"
    StringAlign=LEFT

  8. Finally, we’re going to save the file, and open it in Rainmeter by right clicking the raindrop icon in your taskbar (normally bottom-right) and selecting Configs>ez_calendar>ez_calendar.ini. If it doesn’t show up, you might have to close Rainmeter and launch it again.
  9. If all went well, a big text-based calendar will pop up on your desktop! Right click it and play with its options.

That was a pretty basic example, but at least now you know how to do it. I recommend going to the Rainmter Manual and reading up on additional things you can customize. Try to think of a creative config to make!