text

What is Microsoft (or are they) Thinking?

First the news:

If you want to develop desktop applications—anything that runs at the command line or on the conventional Windows desktop that remains a fully supported, integral, essential part of Windows 8—you’ll have two options: stick with the current Visual C++ 2010 Express and Visual C# 2010 Express products, or pay about $400-500 for Visual Studio 11 Professional. A second version, Visual Studio 11 Express for Web, will be able to produce HTML and JavaScript websites, and nothing more.

from Ars Technica

So basically, you now have to pay for Visual Studio if you want to do anything more than write Metro apps.

In addition to making a mockery of Microsoft’s claim that the desktop is important to Windows 8, the move means that Windows is no longer a good platform for learning basic skills like “how to program.” Few of us are born with the ability to write a program; most of us have to learn using a combination of books and online resources. Programming can be a complex task even on a good day, and to keep this complexity tractable, most beginner developers stick to simple, command-line programs without rich GUIs. This allows a much greater focus on mastering the programming language and core concepts.

But that’s not the biggest problem.  As the article’s author correctly notes:

Charging developers for Visual Studio is, in effect, making developers pay money for the privilege of making Windows worth buying. And yet, without third-party software, Windows itself has next to no value; it doesn’t seem right to make programmers pay just to be able to make Microsoft’s operating system valuable.

Let’s step back and think about what it is that made Windows as ubiquitous as it is now: thrid-party software development.  And now Microsoft, the company with probably the best tradition of developer relations, is destroying Windows and Visual Studio (one of the most amazing IDE’s ever created) as a developer-friendly platform.  Ok, so the counter argument: there are other tools for application development on Windows.  Yes, there are.  But have you tried using them?  They are not much fun to try and work with.  Also, development on other platforms already does not have the cost that Microsoft is now requiring (Linux is free, and Apple only charges something like, 5 bucks).  Unless I’m badly mistaken, I foresee a significant movement away from Windows as the development platform of choice in the not-so-distant future.  No, it probably won’t really show for two, three, maybe even four years, but this is totally the wrong direction Microsoft should be taking.

It begs another question, too.  Why would Microsoft force developers to shell out $500 to develop for the desktop, and yet leave the tools for Windows Phone 7 and Metro app development free?  Are they that desperate to try and force developers to develop for them?  Sorry Microsoft, but this seems like a really stupid move for the future of your platform.

text

Lines and Quads

It’s summer break, and work hasn’t started yet.  For a normal person, that means some time to kick back and chill.  But I’m not exactly normal.  Instead I’ve spent my break so far trying to figure out how to find the point of intersection of a line with a quad inside of Blender.  Now that I have figured it out and have it working, I’m going to explain where things started and walk to where they ended.

At first glance this appears to be a fairly simple problem: after all you can figure out fairly accurately where the two would intersect simply by looking at the line and the face.  A computer is not able to do that though.  Instead, a computer sees the coordinates of the geometry defining the shapes as vectors.  Does the line given by the points [-1.1, 0.3, 0] and [-2.8, -1.2, -0.4] intersect with the quad defined by the points [1.5, -0.6, 0.2], [0.7, 0.4, 1.2], [1.2, 0.7, -0.4], [1.3, -0.3, -2.2]?  If so, where do they intersect?  The picture below provides a visual of what the line and point would look like:

[[posterous-content:pid___0]]

As you can clearly see, they don’t intersect.  But for a computer, there is no easy way to see that.  So instead we define the problem in a way that a computer can think in.  A computer requires defining the problem in terms of mathematical formulas that it can then put the coordinates into, calculate, and then get the answer from.  So how do we define the line and the face as formulas?  Enter linear algebra and vector math:

Linear algebra is the branch of mathematics concerning finite or countably infinite dimensional vector spaces, as well as linear mappings between such spaces. Such an investigation is initially motivated by a system of linear equations in several unknowns. Such equations are naturally represented using the formalism of matrices and vectors.

from Wikipedia

First, we shall treat the line as a vector.  As some may recall from their high school algebra or geometry, a line is defined by two points.  Skipping over some of the theory about adding vectors, we can think of the vector as being defined by two points also: its starting point, and its end point.  To find the value of the vector, we are going to subtract the coordinates of the start point from the end point.  If we say the starting point is called “a” and the end point is called “b”, then this gives us the following base equation:[[posterous-content:pid___1]]There are two problems with this though: 1) a vector is assumed to start at the origin and 2) we have no control where on the line we are considering meaning we can’t just look up any coordinates along the line.  To solve the first problem, we add the vector defining the starting point.  For the second we introduce a new variable, and call it “t”.  This will serve to scale the vector with scalar multiplication  With simplification we get the following:[[posterous-content:pid___2]]This is called the “parametric equation” for a line in 3-space.  When “t = 0”, we get the starting point.  When “t = 1” we get the end point.  “t = 0.5” is the point half way in between the two, and so forth.

We now have to create a formula for the quad.  After some investigation, it turns out that Blender has an interesting definition for a quad; Blender defines a quad as the set of all lines spanning two lines.  We’re first going to define the two lines:[[posterous-content:pid___3]]Now the definition says that for those lines, there are lines going between them.  This means that the first point for our line will be on the first line and the second needed point will be on the second line.  “t” is that same for both lines, but cannot be the same for the line we’re creating.  If it was the same, then we would end up with a diagonal line between the two lines.  So we need another “t” for that.  Putting it all together we get:[[posterous-content:pid___4]]Now defining our original point in terms of another “t” (because it cannot be the same one either used in defining the plane):[[posterous-content:pid___5]]Now since we are looking for the point of intersection, the two vectors should give use the same solution:[[posterous-content:pid___6]]All we have to is solve for the three different “t” variables and we have created a system of equations that we can put out points into and get useful information back from.  If all three “t” variables are equal to or between 0 and 1, then they intersect.  By putting the resulting “t” values into the original equations, we can look up the point of intersection.  There happens to only be one small catch though: solving for the “t” values, it turns out, is no simple task.  Enter a symbolic solver.  In my case I used Mathematica, but there are alternate solutions out there.  The input and output has been reproduced in the following PDF.[[posterous-content:pid___7]]

Because the goal is a solution that can be easily programed, there was some slight modifications to how I solved it.  I first had it solve for the entire system of three equations, three unknowns.  I then took the simplest and “calculated” the value; I assumed the simplest to be a known.  Then I solved the system again, this time as two equations and two unknowns.  Again, I assumed the simpler of the two as a constant and solved again as one equation, one unknown.  This produced the equations to solve for the three using previously calculated values (and thus saving computation time).

From that, I created the following Python code for Blender:

Formulas generated by MathML Central using MathML and powered by Wolfram webMathematica 3.  Code hosting provided by PasteAll.org.

text

Creating the Windows 8 user experience

In short, Microsoft is finally dropping Aero Glass infavor of Metro.  While some may not like this, I think it is a good step in unifying the feel of their various products:

Several bloggers have wondered about how much we would be changing the visual appearance of the desktop in Windows 8.

We have appreciated seeing people on various sites post screenshots of their proposed designs for “Metro-izing” the visual appearance of the desktop. It is exciting to see the interest and passion that goes into designing them!

We spent a lot of energy carefully considering how substantially to update the appearance of the desktop in Windows 8. We looked at many, many pictures, and considered hundreds of designs. Our primary goal was to bring visual harmony to Windows, while still preserving much of the familiar feel of the Windows 7 desktop and not sacrificing the compatibility of existing apps.

In the end, we decided to bring the desktop closer to the Metro aesthetic, while preserving the compatibility afforded by not changing the size of window chrome, controls, or system UI. We have moved beyond Aero Glass—flattening surfaces, removing reflections, and scaling back distracting gradients.

At the same time, they are working hard to ensure compatibility with design assumptions app designers have had for the life of Aero Glass:

Since the release of Windows Vista (which introduced Aero Glass), many desktop programs have integrated with glass, making assumptions that they should custom draw dark text with a cloudy “blur” texture behind it to make their text readable.

Some of you may remember the substantial compatibility problems that arose when the system colors changed from light on dark (Windows XP) to dark on light (Windows Vista.) It took many years for these to be fully sorted out. We would prefer not to reintroduce these compatibility issues again in the other direction. So, “color matching” the new design on the desktop is not entirely feasible.

Overall, it will be very interesting to see what the Windows desktop will look like when it goes RTM.

text

Student Makes Real-Life Portal Turret

A Penn State robotics student has gone to the effort of building a working, automated turret from the video game series Portal. Powered by a webcam, Arduino boards and hacked up USB-missile launchers, this is one serious piece of kit that is just as adorable as its in-game counterpart.

from Slashdot

You know, this really makes me want to make a real life sentry like Valve has, just of course with the whole tracking and firing part.  Well, sounds like another summer project!

text

More Floppy Music

I get a kick out of people using old technology in a way it was by no means intended: to make music.  So when it turns out that there are two YouTuber’s out there, Sammy1Am and MrSolidSnake745 that have churned out a bunch of stuff using 8 floppy drives as their “instruments” including such tracks as Owl City’s “Fireflies”, Skrillex’s “Scary Monsters and Nice Sprites”, the end songs from both of the Portal games (“Still Alive” and “Want You Gone”), and even “He’s a Pirate” from the “Pirates of the Caribbean” series.

text

Paul Miller: “I’m leaving the internet for a year”

Esteemed tech writer Paul Miller is going to go without the Internet for one year:

At midnight tonight I will leave the internet. I’m abandoning one of my “top 5” technological innovations of all time for a little peace and quiet. If I can survive the separation, I’m going to do this for a year. Yeah, I’m serious. I’m not leaving The Verge, and I’m not becoming a hermit, I just won’t use the internet in my personal or work life, and won’t ask anyone to use it for me.

from The Verge

As a tech writer, this is no small thing.  His lively hood basically depends on the Internet at this point.  So why do it?

I feel like I’ve only examined the internet up close. It’s been personal and pervasive in my life for over a decade, and I spend on average 12+ hours a day directly at an internet-connected terminal (laptop, iPad, Xbox), not to mention all the ambient internet my smartphone keeps me aware of.

Now I want to see the internet at a distance. By separating myself from the constant connectivity, I can see which aspects are truly valuable, which are distractions for me, and which parts are corrupting my very soul. What I worry is that I’m so “adept” at the internet that I’ve found ways to fill every crevice of my life with it, and I’m pretty sure the internet has invaded some places where it doesn’t belong.

I’m also interested in a sans-internet reality as a technology writer. There was a time when technological innovation didn’t seem intimately linked to the internet. Most pre-80s sci-fi, for instance, explored those futures. Now I’d like to examine what modern technology looks like in a TCP/IP vacuum. Is the internet truly the oxygen of our electronics, or just an important piece?

from The Verge

Overall, this looks like a very interesting experiment, and as a techie it is one I am almost tempted to try (though definitely not as long) myself.  He will still be writing for The Verge, just doing it “the old fashioned way”.

text

ASCII Art Signatures In The Wild

As a web developer/designer (amongst other things), I take pride in my craftsmanship and like to sign my work with an ASCII art signature in an HTML comment. I know I’m not the only one, since I was inspired by seeing others do it.

So, I had this idea: Wouldn’t it be awesome to scan through a chunk of the Internet and see who else is doing the same thing, and how their signatures look?

There is some really good ASCII art to be found.  Hit the GitHub source to see the best results.

text

Gideon Sundback, who did not invent the zipper, gets a Google Doodle

Gideon Sundback — the man who did not invent the zipper but didperfect it — is the recipient today of a giant, interactive Google Doodle zipper.

It’s a doodle to add zip to your day, honoring the birthday of the man who helped introduce the fastening device into everyday clothing. Look around — there’s a good chance you’ll see Sundback’s handiwork in nearly every item of clothing you own, save shirts and blouses.

from LA Times

This has got to be one of the better doodles Googles done.

likes

follow