The complete history of the IBM PC, part two: The DOS empire strikes | Ars Technica. This is part two but it links to part one.
]]>Yeah, I haven’t posted here in forever. I fell off the wagon. I’m working my way back with tweet-length posts.
]]>“The source of both hazes likely involves sunlight-initiated chemical reactions of nitrogen and methane, leading to relatively small, soot-like particles (called tholins) that grow as they settle toward the surface. This image was generated by software that combines information from blue, red and near-infrared images to replicate the color a human eye would perceive as closely as possible.”
Pluto’s Blue Sky
This blue-sky image of Pluto is absolutely stunning
By connecting a global array of radio telescopes together to form the equivalent of a giant Earth-sized telescope – using a technique known as Very Long Baseline Interferometry and Earth-aperture synthesis – scientists will peer into the heart of our Milky Way galaxy where a black hole that is 4m times more massive than our sun – Sagittarius A* – lurks.
Astronomers know there is a disk of dust and gas orbiting around the black hole. The path the light from this material takes will be distorted in the gravitational field of the black hole. Its brightness and colour are also expected to be altered in predictable ways. The tell-tale signature astronomers hope to see with the Event Horizon Telescope is a bright crescent shape rather than a disk. And they may even see the shadow of the black hole’s event horizon against the backdrop of this brightly shining swirling material.
Astronomers to Peer Into a Black Hole for 1st Time with Event Horizon Telescope by Carole Mundell, University of Bath
Event Horizon Telescope
Wikipedia
This global telescope may finally see the event horizon of our galaxy’s giant black hole By Daniel Clery
There was a post this morning based around a Youtube video of a full implementation of Life written in APL, as a single function of course.
In school we had the opportunity to dabble in APL in a survey of languages class that was part of the typical core of computer science classes. There were one or two actual APL terminals in the terminal cluster. APL uses Greek letters along with the usual alphabet to create a very concise and brief language and an actual APL terminal had all of those characters on the keyboard. If you didn’t have an APL terminal, then you had to resort to using short key words instead. Another guy on the hall of my dorm, who was an actual computer science major (it was called information and computer science, ICS) would go over to the cluster and play around with APL.
APL and LISP were the first purely functional programming languages I had any experience with. I knew they weren’t like regular procedural programs and everything was composed of functions, but I don’t think the term functional programming even existed then. I also don’t think the dichotomy of functional programming vs. object-oriented programming. Smalltalk was still working through it’s early childhood at Xerox PARC.
Leap to the present and this wonderful video of the development of the Game of Life using APL. It’s a joy to watch. Don’t be put off by the strange Greek operators. Watch the matrices as they are formed. You may feel like you’re getting lost but, for Life enthusiasts, when he adds the offsets to get the neighbor counts I think you’ll see what’s happening. It’s incredibly brilliant.
Then Curtis Autery posted this wonderful primer on APL after experiencing the difficulty of finding good APL information on-line. He’s done a great service to the language.
]]>Each candle reprsents a number. Just light the candles for numbers that add up to the age you want to represent.
To label the candles, the first one on the right is 1. The next is 2. Then you just keep doubling, 4, 8, 16, 32, 64.
() ()
|| || || || || || ||
|| || || || || || ||
|| || || || || || ||
64 32 16 8 4 2 1
In the above illustration, we represent the age 40.
() () () ()
|| || || || || || ||
|| || || || || || ||
|| || || || || || ||
64 32 16 8 4 2 1
This one is 23. You get the idea. And, yes, you can leave off the candles on the left if they aren’t lit.
This is how computers reprsent numbers, as “bits” (binary digits) that can be on or off. Bits are typically stored as transistors acting like switches (on or off) or storing a charge on a tiny capacitor to represent a one, a lit candle. When transmitting data the bits may be represented as different voltages or other signal level schemes.
]]>Brian Harry discusses a single git repo with six million files.
]]>So, fast forward to today. It works! We have all the code from 40+ Windows Source Depot servers in a single Git repo hosted on VS Team Services – and it’s very usable. You can enlist in a few minutes and do all your normal Git operations in seconds. And, for all intents and purposes, it’s transparent. It’s just Git. Your devs keep working the way they work, using the tools they use. Your builds just work.
As a side effect, this approach also has some very nice characteristics for large binary files. It doesn’t extend Git with a new mechanism like LFS does, no turds, etc. It allows you to treat large binary files like any other file but it only downloads the blobs you actually ever touch.
From Wikipedia, “In 2005, about 98% of all mobile phones sold used at least one ARM processor. In 2010, producers of chips based on ARM architectures reported shipments of 6.1 billion ARM-based processors, representing 95% of smartphones, 35% of digital televisions and set-top boxes and 10% of mobile computers. In 2011, the 32-bit ARM architecture was the most widely used architecture in mobile devices and the most popular 32-bit one in embedded systems. In 2013, 10 billion were produced and ‘ARM-based chips are found in nearly 60 percent of the world’s mobile devices.’”
The short version is the following. The ARM 32-bit processor has 16 general purpose 32-bit registers, though R14 and R15 are the stack pointer and program counter, with an orthogonal set of instructions. There’s the so-called “Thumb” set of instructions. If you use this subset, the instructions can be “compressed” into 16-bit instructions.
Orthogonal means you don’t need dedicated instructions for particular registers, e.g., “LDA” to load a value into the accumulator, or “STX” to store a value from an X index register into a memory location. These instructions look like “MOV R2, R3” to move a value from R3 into R2.
At some point it occurred to me that it should be pretty straightforward to write and run assembler on a Raspberry Pi running Raspbian Linux. Voilà!
There’s an excellent series called “ARM Assembler in Raspberry Pi.” The posts are broken out into small chapters. This set of examples uses the gcc compiler to assemble .s files. It pulls in the C overhead to make an executable file.
Here’s my first program
.global main
main:
mov r0, #2 /* Put 2 in register r0. */
bx lr /* Return from main. */
To assemble and build it:
as -o first.o first.s
gcc -o first first.o
pi> ls -l
total 20
-rwxr-xr-x 1 pi pi 5564 Jan 14 21:38 first
-rw-r--r-- 1 pi pi 640 Jan 14 21:37 first.o
-rw-r--r-- 1 pi pi 193 Jan 14 21:37 first.s
Run. The answer is the return code from the program.
pi> ./first
pi> ./first ; echo $?
2
I found another excellent tutorial by Derek Banas on YouTube which showed how to use the Linux “ld(1)” command to load (link) the assembled .o file which has much lower overhead than using the gcc compiler. Of course, how could I have forgotten ld.
ARM Processor Architecture
Wikipedia: ARM architecture
ARM assembler in Raspberry Pi – Chapter 1
Introduction to ARM
Assembly Language Tutorial (Video)