|
Intel is unbeatable in the laptop space today, but the combination of the popularity of tablets and the laws of physics at 19nm scale and below makes you wonder where they will be in five to 10 years' time. The battle for Intel's future: Atom bombs versus ARM-wrestling.
|
|
|
|
|
As far as 99.9 percent of the world population is concerned, Microsoft is a stodgy, old-guard technology company. Its bottom line is fully leveraged against PC operating systems and business software—hardly the building blocks of a future-thinking portfolio, right? But scratch that cold, conservative, pedestrian surface, and you’ll find a Microsoft that’s a veritable hotbed of cutting-edge innovation. Indeed, the company doesn't just loosen its purse strings when it comes to research and development. No, it practically throws money at really big thinkers to build a more wondrous, fantastical future. "My first stop on any time-travel expedition would be Bell Labs in December 1947."
|
|
|
|
|
When starting a new project, do you ask yourself whether your program will be compute-bound or I/O-bound? You should. I’ve found that in most cases it’s either one or the other.... Given all of these different scenarios, how do you decide what threading capabilities your program requires and what concurrency building blocks are necessary or useful? Well, that’s a tough question to answer generally and something you’ll need to analyze as you approach a new project. It’s helpful, however, to understand the evolution of threading in Windows and C++ so you can make an informed decision based on the practical choices that are available. One thread to rule them all...
|
|
|
|
|
One of the large new features in PHP 5.5 will be support for generators and coroutines. Generators are already sufficiently covered by the documentation and various other blog posts (like this one or this one. Coroutines on the other hand have received relatively little attention. The reason is that coroutines are both a lot more powerful and a lot harder to understand and explain. In this article I’d like to guide you through an implementation of a task scheduler using coroutines, so you can get a feeling for the stuff that they allow you to do. <?php wait we're gonna do what? ...
|
|
|
|
|
The trivially straightforward algorithm is actually good enough to solve the beginner and intermediate versions of the game a good percent of the time. Occasionally, if we’re lucky, it even manages to solve an advanced grid! When humans play minesweeper, we compete for the fastest possible time to solve a grid of minesweeper. So it doesn’t matter if we lose 20 games for every game we win: only the wins count. This is clearly a silly metric when we’re a robot that can click as fast as we want to. Instead, we’ll challenge ourselves with a more interesting metric: Win as many games as possible. You sank my algorithm!
|
|
|
|
|
If you think about it, a JIT is not that different from a program that calls printf(), a JIT just so happens to emit machine code rather than a message like "Hello, World!" Sure, JITs like the JVM are highly complicated beasts, but that's because they are implementing a complicated platform and performing aggressive optimizations. If we work with something simpler, our program can be much simpler too. Just in time: start 2013 right by building your own simple JIT compiler!
|
|
|
|
|
The indie gamedev community is awesome: so willing to share tips, tricks, advice, and even detailed tutorials explaining important concepts. Here, I’ve rounded up a few dozen of my favourite examples from around the internet, covering coding, maths, game design, and being a game developer. Read these, then code us up an online, multiplayer version of Risk Legacy, please.
|
|
|
|
|
Really? Lazyfoo is not on the list? o.o Seems fishy
|
|
|
|
|
If you’re not familiar with it, TypeScript adds a lot of necessary features to JavaScript to make it suitable for building real apps, while still “compiling down” to JavaScript to maintain JS’s single biggest advantage: ubiquity. Further, TypeScript has tooling inside Visual Studio so that it works nicely with a wide variety of Windows projects, including Win8/JS projects. However, while Microsoft has made a nice Win8/TS sample available, there are currently no Visual Studio project templates for building my own apps. Luckily, it was easy enough to build some... Start your TypeScript projects with these Visual Studio templates.
|
|
|
|
|
When Joe Woodland dreamed up the bar code in the late 1940s, it looked like a bull’s-eye — a series of concentric circles. But although Woodland went to work for IBM in the early ’50s and helped Big Blue push the UPC into the market, he sold his original bull’s eye patent to another company, and the code IBM settled on looked more like a rectangle — a series of short, parallel lines.... Laurer first realized the code could be construed as some sort of apocalyptic signpost while it was still under development in the early 1970s. His daughter happened to be studying the Book of Revelation, and he couldn’t help but notice that the code harbored a few 6′s — though not the 6′s alleged by the urban legend that’s still bouncing around the internet. And when he had opened the fourth seal, I heard the voice say, "Attention shoppers...."
|
|
|
|
|
My response? They (the [REDACTED] protestors) are all ID-TEN-Ts and have a non ending BrainNotFoundException, coupled with an IAmVeryGullibleexception and an IAmStupidException.
Bob Dole The internet is a great way to get on the net.
2.0.82.7292 SP6a
|
|
|
|
|
This might come as a surprise to readers not into computer programming, but professional and hobbyist programmers alike all use the same tools as we did 60 years ago — one-dimensional, sequential plain text. It’s like writing a single document in Word without using any formatting, with the goal of instructing a large symphony orchestra to perform a complex musical piece. That app you’re using could as well have been built in the 1950s, had we the same powerful hardware back then. We are thoughtlessly using Grandpa’s old toolbox to build a spaceship. Your favourite fancy-pants modern programming language is from the 1950s.
|
|
|
|
|
What an idiot. "Writing code" just works. Nothing better has come along because there (probably) is nothing better.
Would you want to try dragging and dropping images? It's very limited in what it can do. Currently I'm writing a lot of SSIS packages -- and it just sucks! It's horrible to work with and in a many many cases I'm left writing code anyway.
How would you discuss problems and solutions with colleagues if you can't use words to do it.
I'm just glad I never used punch cards or switches.
|
|
|
|
|
We're also using glass in our windows, which is essentially the same technology that the ancient Egyptians were using in 2000 BC.
We're also using clay bricks to make houses, which is essentially the same technology that the ancient Mesopotamians were using in 3000 BC.
We're also using water to bathe ourselves, which is essentially the same technology that has been used since before the last ice age.
Invent something better if you don't like it.
|
|
|
|
|
Rasmus Andersson-
I'm amazed that the majority of people commenting on your article have a 'what we have is as good as it can get ' mentality. I think from the first line of your article I had a bit of an epiphany--not one that I can fully explain yet and not one that I would dare describe to a seemingly short-sighted group of peers.
Several contributors point out that processors execute operations in a sequential manner, and that it 'all comes down to 1s and 0s in the end' or something like that. Well guess what guys, assembly language takes a certain variant of programming discipline to do well. And even at that level, while you are telling the processor to load data and executable code with values in registers from specific memory segments, even assembler is an abstraction. Assembly code is compiled down to the actual bit values that a processor can understand.
My point here is that as programming has evolved; we've seen the introduction of object-oriented languages. Yes, of course it still all comes down to bit vales for the processor at run-time, but OO design helps us as HUMANS to take abstract needs and use the concept of classifications (more often than not called classes) to allow ourselves to create solutions for complex real-world business requirements using a much higher level of abstraction.
Even modern OSs and run-time platforms help us to abstract with high-level languages because we don't have to worry about handling the threads notifying our applications of events triggered by the user, e.g. button clicks, scroll bar movements, etc. We are to a certain extent freed from a lot of the mundane, thanks to the OS, the compiler and in many cases the run-time support. And let’s not forget the extensive pre-built libraries we have at our disposal.
Yes, we have all of the above, better ways to organize software using classes, conceptual tiers for separation of concerns, software designs lending themselves to extensibility and reuse. But as Rasmus points out, we still sit at a console typing text to ‘classify’ much of these pieces of code, and defining how they will interact once they become objects during program execution
Text is linear, even when defining classes that may interact in a multidimensional manner when used in an application.
We use linear text to describe how multiple threads should run simultaneously. That is certainly an example of using a one-dimensional language to describe a multi-dimensional process.
Rasmus Andersson is perhaps a bit too forward-looking for the audience here (no put-down intended). I happen to think he is quite correct in challenging future creators of development tools and environments to take us to the next level, where we can concentrate more on the problem, in an abstract way, much more in the way the user would describe it, and be able to translate the solution in a manner that is more efficient than writing text for the most part (although I will always believe in the ability to get to the lowest-level instruction layer when needed).
In any case, whether you happen to agree with Rasmus or not, we may want to prepare psychologically for a future in software design and development in which being adept at writing code textually in a classic IDE is of diminishing value, and the ability to embrace radically different tools that increase productivity immensely are going to be what keeps us as good developers in business.
|
|
|
|
|
Well, there is Alice, which I used in college years ago to create games in a graphical environment.
And then there are the multitudinous designers available (e.g., Entity Designer, Windows Forms Designer, WPF Design Surface, SharePoint Workflow Designer, markup designers, and so on).
And there are IDE's like Code Bubbles that are textual, but add lots of graphical niceties.
|
|
|
|
|
The name Windows RT wasn’t chosen to convey a message about Windows moving to ARM processors. Nor was it chosen to convey that it was a Tablet OS. The name appears to have been chosen primarily for one reason, it is an operating system devoted to running Windows RunTime apps. It splits the mainstream Windows product into two families. Windows for running Win32 “desktop” and Windows RunTime applications and Windows RT that drops the legacy Win32 application support. Windows RT is Microsoft’s go forward client operating system.
|
|
|
|
|
What’s the best way to kick off 2013? By emulating a 28 year old computer in your browser of course! SAE is the Scripted Amiga Emulator, an open source project created by Rupert Hausberger. His aim is ‘simply’ to make classic Amiga emulation possible in modern web browsers. And to that end he’s written an Amiga emulator in native JavaScript. Not a pre-compiled Java/C to JS hybrid, but basic JavaScript that anyone with the know-how can play with. You do need a beast of a PC to run SAE... maybe better to dig out that old Amiga after all.
|
|
|
|
|
Computers are ubiquitous in modern life. They offer us portals to information and entertainment, and they handle the complex tasks needed to keep many facets of modern society running smoothly. Chances are, there is not a single person in Ars' readership whose day-to-day existence doesn't rely on computers in one manner or another. Despite this, very few people know how computers actually do the things that they do. How does one go from what is really nothing more than a collection—a very large collection, mind you—of switches to the things we see powering the modern world? Telling a computer what to do is actually quite simple when broken down into simple concepts.
|
|
|
|
|
Finding errors earlier and more easily is one of the advantages of TypeScript. You can use optionally static typed (optionally) variables, functions, objects to help detect possible mismatches in your code right in your editor. Simply add the appropriate type or define an interface for more complex and custom types, and you are off and running! Defining types is by far my favorite feature of TypeScript. Types are still optional, but this is a nice option if you're the typed type type.
|
|
|
|
|
When you make a game, you often have enemies for the player to combat. You want these enemies to seem intelligent and present a challenge to the player to keep the game fun and engaging.... Obviously I can’t cover everything in this introductory tutorial, but I can show you how to get started with a hands-on example of adding AI into a simple game! In the process of adding AI into this game, you’ll learn about two common AI techniques along the way: steering and finite state machines. Cake and grief counseling will be available at the conclusion of the newsletter.
|
|
|
|
|
While we have been developing a website that displayed user uploaded images in fixed size regions, we have encountered some interesting problems. Should we resize the image to fit the fixed size region? Should we crop the image? Maybe we should mix the two? The no-brainer solution is to crop the image by focusing on the center. This naîve solution gave amazingly acceptable results, but sometimes it fails badly if the interesting region lies outside the cropped zone. Our algorithm should be able to somehow locate automatically the interesting part of the image. Here's an algorithm for automatically estimating what's the most important part of an image.
|
|
|
|
|
I made the mistake of publicly commenting on someone's idea of a RESTful API. And already - I've probably lost you. I don't know any single term more explosive and zeal-inducing than REST and "what it means to be RESTful". It needs explaining. Because clearly you don't know REST.
|
|
|
|
|
The flurry of database action over the past year rendered the usual discussion around structured or unstructured, SQL, NoSQL, and NewSQL databases even more, um, nuanced than before. Matthew Aslett, research manager at 451 Research took the bull by the horns and updated his previous (one-month-old) database road map to include all sorts of new entries. And here (drumroll please) is the result. Continue past key-value and turn right at Big Table. If you run into sharding, you've gone a table too far.
|
|
|
|
|
The number of seconds since the very beginning of 1970, known as Unix time, is often maintained in a single variable in the computer’s operating system. When Unix was first designed, this number was stored in 32 bit variable. That means that the number could range from 0 to 232. Zero corresponds to the midnight January 1, 1970 (UTC). So what time does 232 correspond to? That will be 3:14:07 (UTC) on January 19, 2038. Bad things will happen then to computers that still are still using 32 bit integers to store Unix time. Two-step authentication, cryptography and a little introduction to Message Authentication Codes (MAC).
|
|
|
|
|