Proposed: The basic data types of a programming language should be interfaces, the standard library should work on interfaces, and the low-level data types should be implementations of the basic interface.

The php devs spent years trying to convert their default string type from ascii to unicode before giving up. Golang shits a brick if you try to convert between a strings and a []byte without an explicit cast. Consider instead that every function were written to operate on a string interface rather than a string data type, and we let the compiler and optimizer figure out what to do with whatever is passed into the function. []byte can implement the string interface. The programmer can send the standard string functions data in any charset (korean, japanese, whatever) and it will just work because a string of any charset will implement the string interface.

Another use case: You read some numbers as an integer. It could be a bigint or a small int. You don't care until you need to store it again. Performance and storage do not matter, you just need some math or a comparison to work. You write your code to work on an "int" interface and let the compiler figure out how to implement it.

The conventional handling of technology upgrades in a video game is fairly simple:

  • Item stats go up
  • Cost of next upgrade goes up

The better games will open up new branches of gameplay possiblities, but let's leave that out of the discussion.

I've been playing a game where the tech upgrades often produce surprisingly large leaps in power. The game makes the player choose between replacing items with the newer technology (which costs a limited supply of money) or waiting for the next upgrade (which may be either a minor upgrade or a huge upgrade). These upgrades appear to be hardcoded. What if they were randomized?

It is common for modern roguelike games to have categories of upgrades. Upgrades only start with the classical D&D +1, +2, +3 system. Then there is a category of upgrades that upgrade one stat, a "rare" category that upgrades two stats, and a "legendary" category that upgrades three or more stats. The upgrade categories are usually color-coded for your convenience.

Let us consider a game where the player pours resources into research, and imagine possiblities of different outcomes.

  • Complete failure. The scientists shamefully report that the plan didn't work and they have to go back to the drawing board. However, there is an increased chance of succeeding in the next research attempt. This was used in the DOS game Stellar Conquest 2469 (stelcon).
  • Two steps forward, one step back. Two (or more) stats are upgraded, while one (or more) other stats are downgraded. This reflects the TANSTAAFL principle.
  • Technology branch. A new branch of research is opened for this type of item. This may involve a downgrade of the item stats. However, because this is a new and unexplored branch of research, the cost of advancement is reduced. This can be considered a subcategory of "two steps forward, one step back".

In a game where different item choices require different gameplay styles, the optimal choice of items may become different for each time the game is played. Imagine a space combat game where missiles got cheap and powerful in one playthrough while their range and reloading speed improved in another playthrough. Imagine an RTS where in one playthrough your ranged units get increased range while in another playthough they get increased hit points. Imagine an RPG where in one playthrough your healer gets reduced cost and casting time of your healing spell while in another playthrough only the healing power improved significantly. The behavior of the game components may change just enough to make the player choose a different strategy, increasing replay value.

This is starting to sound like removing the upgrade tree from player control. My intended vision was for randomized upgrade paths resembling organic evolution, where each upgrade is the starting point for the next upgrade. Imagine that a crafter develops a new technique which requires more time and resources but produces a more resilient product; you can continue using the old technique or refine the new technique.

Counter-thought: the Dragon Warrior series randomized the values of upgraded stats when a player gained a level. It barely affected the game because the characters were different enough in their skillsets that the trivial differences in stats did not matter; the stat upgrades were guided by weights for each character class; and the randomness approached a mean average over enough levels. If the upgrades are expected to be different enough to affect gameplay when the game is replayed, these normalizing factors need to be overcome.

Layers of abstraction

At the hardware layer we have native bytecode created from amd64 through a translator. We operate on registers, have to keep track of what data is in what register, and if the data has any meaning there is no way for the computer to know about it.

At the low level of abstraction we operate on bytes and sets of bytes. OS, POSIX, and standard library interfaces are written in C. One might consider high level assembler with strings and matrices to be at this level. There are multiple data definition formats to define how data is laid out in memory: C header files, SQL data definitions, a custom format for each language.

At the intermediate level of abstraction we define classes to associate the data structures with the methods that work on the data. We have templates, interfaces, abstracts, generics to allow code reuse.

At higher levels everything is abstract. We create anonymous objects on the fly and tell the computer to run operations on members that we hope will have been defined by runtime.

Method abstraction

There are similar layers of abstraction for methods, functions, subroutines. At the hardware layer a method is just a series of instructions that you jump to. Low-level programming allows you to describe the inputs and outputs: this function takes a byte pointer and returns a byte pointer. At the intermediate level of abstraction you can define a template function that allows the same code to be reused on different data types. At higher levels of abstraction all functions do that by default.

Abstracting operating environments

We have had all of these advances in abstraction in the programming area but our shells are still stuck in the early 1990s. Programs are written to read bytes or lines at a time. Streams of characters are passed between programs with no information about what the characters mean. Each program in the sequence must re-parse the stream.

Consider this sequence.

sh$ ls -l | bar > baz

Presently this outputs a chunk of text, and the bar program needs to know what to do with the text. Imagine instead that ls -l generates a table or recordset of files and their attributes, and what it outputs is context-dependent.

  • If the receiver is a text terminal, the shell uses a formatter provided with ls to generate a text table compatible with today's ls -l.
  • If the receiver is a hypertext terminal running in a windowed environment, the shell uses a formatter to send the data and metadata to the terminal in a given standard format that the terminal will use to produce an interactive display of files.
  • If the receiver is a .csv file, the shell automatically uses the standard table-to-CSV converter from the operating system's libcsv.
  • If the receiver is a program that requests input of a given class, the shell attempts to present the input as that class.

In a high-level shell design,

  • Programs are written to read more abstract sequences of objects. The implementation of the reader is chosen at runtime. Programs will have metadata exposing their expected input types.
  • Programs may pass both data and metadata. There will likely be a standard for a data+metadata format, and all standard readers will automatically recognize it.
  • Programs may pass pre-parsed chunks of data to skip the step of parsing by subsequent programs. This may be as simple as copying a chunk of memory from one program to another on the same computer. The high level program code will be the same whether the receiving program runs on the same computer (memory copy) or sends the data over the network.

Members of Turkey's opposition Republican People's Party have accused the Turkish state of responsibility for the Ghuta gas attack, claiming to have wiretaps proving that the sarin and its delivery system were produced or acquired by the Turkish Mechanical and Chemical Industry Corporation.

From John Schindler:

We've reached the point of security collapse in DC that the general reaction to the CIA director getting hacked & doxxed is "yeah, sure, ok"

Browsing through the news a little too quickly, I badly misread the headline "Nato warns Russia on Syria strikes" and now I can't stop imagining a certain whiskered ninja bragging about his jitsu skills to a flexing, nonchalant Vladimir Putin.

Link related.

Report: Prominent Jewish lawyer threatened by ISIL after falling prey to systemic neo-Nazi plot

It's coming out this morning that all of this was the work of one 20-year-old from Florida named Joshua Ryne Goldberg. He was the fake white supremacist on /pol/. He stole Josh Bornstein's identity. He was the fake ISIS account Australi Witness. The dude was Jewish and rusing everybody.

[Rita] Katz said, in an interview with the Age, that the Twitter user is “part of the hard core of a group of individuals who constantly look for targets for other people to attack,” and recruits for ISIL.


The guy made death threats so he is in trouble.

[Edit Sep. 12] The Sydney Morning Herald has a detailed article on the troll's activities.

From The Daily Beast:

More than 50 intelligence analysts working out of the U.S. military's Central Command have formally complained that their reports on ISIS and al Qaeda’s branch in Syria were being inappropriately altered by senior officials ...

... the complaint also goes beyond alleged altering of reports and accuses some senior leaders at CENTCOM of creating an unprofessional work environment. One person who knows the contents of the written complaint sent to the inspector general said it used the word “Stalinist” to describe the tone set by officials overseeing CENTCOM’s analysis. Many described a climate in which analysts felt they could not give a candid assessment of the situation in Iraq and Syria ...

Some of those who complained were urged to retire, one official familiar with the report told The Daily Beast. Some agreed to leave.

[Edit Sep. 11] Spencer Ackerman blames Steven Grove and suggests that Grove is acting under pressure from James Clapper.

Not only was there a shakeup in the 49ers coaching staff after the firing of Jim Harbaugh, but the 49ers have lost almost enough players to field a team. Many of them are starters.

[Edit Aug 28] and starting OLB Ahmad Brooks was charged with sexual battery, so that might be another player out.

We'll miss these guys too

Judging by the preseason, the new players and coaching staff are doing a good job. However, I have no idea who these people are.

Barely related: explaining football to a dinosaur.

[Edit Sep 6] More players were cut to bring the team down to 53 men for the season. Of the names I recognize:

Remaining on the team in some form:

Here's a more detailed article on the most recent changes.

The 49ers have very strong depth at running back this year. Carlos Hyde is Gore's heir apparent. If he gets hurt, the Niners picked up veteran starter Reggie Bush to be his backup. If he gets hurt, Rugby Motherfucker will run you over. If he gets hurt, the rookie Mike Davis had a good enough preseason to earn a roster spot next to these guys. And then Kendall Hunter is hurt but he might get better.

Some blogger argues that Cecil the Lion was not famous before the media made him famous. TL;DR version:

According to Google Trends, “Cecil the Lion” was searched ZERO times before July this year.

Wikileaks has announced:

TPP fails after scandal over US spying on Japan's trade negotiators

This conclusion is not supported by the story they link to, so it is not clear where they are getting this information. Maybe Wikileaks is spying on the Japanese.

Also: David Sirota claims that Hillary Clinton was "deeply involved" in promoting the TPP.

When my comics routine starts to involve hunting through five pages of for the comics that I've started following since the last time I updated my webcomics list, it's time to build a new list. Read more... )

How did Chinese hackers break into the Office of Personnel Management (mentioned earlier)? The OPM gave them root access.

They say that the X-Files is coming back, so I'll drop my vague ideas of what I'd have done with the property instead.


Some FBI agents at a field office in the South are working a mafia case and are short of leads. The new guy Jason sets his computer to run an overnight search of all networked drives overnight for some of the names they are looking for information on. In the middle of the next day, as the search is still running, he starts getting results from file names beginning with the letter X. One of the files is a report issued fifteen years earlier by someone who had the same name as a CIA assistant director who had been in the news recently for mismanaging money.

He brings it to his partner Jeanette whose first words after glancing at the file are "It's an X-file. Those are for UFOs and stuff." He tells her to look at the name of the informant and she recognizes the importance immediately.

They bring it to the special agent in charge who confirms that the assistant director was working in this area at the time, and he finds it very interesting that a trustworthy report would end up in the X-Files. He asks for a printed copy of the report, says that he will investigate this personally, tells Jeanette that she is in charge of the investigation while he is out of the office, and departs alone.

Jason looks at a few other X-Files while he's on break and laughs at them.

A few days later, they go looking for the CIA guy's reports in the X-Files during a meeting with other agents and some of the files are missing. The SAIC's jaw drops. He orders everyone to print out everything they still have access to, "we're going back to paper for this investigation."

Jason and Jeanette get the building's IT to copy all of the X-Files to an external hard drive on the local network so it is under the control of the field office and they can search it more quickly.

The mafia investigation ends abruptly when the mafia leader's yacht sinks in the Gulf of Mexico with some of his deputies on board. Jeanette looks at the SAIC as if she thinks he might be responsible, but the look on his face is one of dejection and defeat rather than guilt. SAIC gets back in command mode: this is going to cause a power vacuum, somebody is going to take over, get on top of things before the gangs start a war across the entire state.

Jason goes home where he still lives with his parents and mentions "hey, did you know Mrs. Johnson's house is supposed to be haunted?" On his next off day he visits Mrs. Johnson and awkwardly asks her if she has ever seen a ghost, because he was reading an old ghost story and it had her address in it. She says no, but when her mother was dying she said that there used to be an angel in the house before the fire that happened when Mrs. Johnson was only four.

On his next work day, Jason updates the 60-year-old X-file about the ghost sighting with the information that he collected on his day off, writing that he did this on his day off, and marks the file as closed. Soon he is in the SAIC's office. The SAIC says "I hear that you closed an X-file. I've been hearing it from my friends in Washington. Now, I read your appendix. It was solid work and you didn't waste any taxpayer money. My gut instinct is to chew you out but you didn't do anything wrong and you did good work. Just... don't forget that we have real crimes to solve. If you want to chase ghosts, keep doing it on your own time."

As Jason leaves, the SAIC adds "and let me know if you find anything interesting in those files." The viewer has seen enough of both characters to know that the SAIC's definition of interesting may be different from Jason's.

On her day off, Jeanette mentions to a friend that her partner decided to investigate a haunted house because it was close to where he lives. Her friend mentions that she knows where there is a haunted house...

Soon they are at the "haunted" house with sleeping bags, laptops, and recording equipment. Jeanette's friend brought her kids who are about 8 and 5. It's a sleepover party atmosphere and Jason mentions that if there are any ghosts they would scare them off. In the morning, they start wrapping up. No one saw anything, no one had nightmares. They walk out the door as the ghost watches.

Different attitudes, different climate

The X-Files themselves are a source of mystery and comedy until they become familiar.

Not every X-File is real. Most of them are worthless, introduced and thrown away in a short time. An extra mystery in the show is which mystery will turn out to be the real one.

There is more than one story in each episode. Some are resolved quickly, some are spread out across a few episodes, many are simply background stories.

Neither investigator is a believer in the paranormal until it forces itself on them, and their attitudes and approaches are different from Mulder and Scully. Jason is in it for the "wouldn't it be cool if..." factor and he drives most paranormal investigations with his eagerness. Jeanette prefers rational explanations but enjoys carrying out the investigation and seeing where the facts lead.

The agents solve real crimes for several episodes before they are assigned to work on the X-Files on a special request from a deputy director who their SAIC is not familiar with.

The agents work in an office with other staff. Actors playing background characters will be hired on for a season to just nod and say "hi" once an episode and to have the same familiar faces in the same cubicles. The agents have friends and families. The cost of the show is going through the roof.

Long-term plot

In later seasons:

  • Somebody gives the order to delete all of the X-Files. The backup drive at the field office is the only copy until they start getting requests from other field offices to make a copy.
  • Jason gets beamed up by a UFO. It turns out to be a secret US military aircraft. After seeing his FBI badge, they hand him over to "The Investigator": Dana Scully. She tells him that aliens do exist, and welcome to the resistance. Jason is written out of the show and replaced by another character.

Some previous concepts:



November 2015

8910 11121314
15161718 192021
2223 24 25262728


RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 27th, 2015 05:09 pm
Powered by Dreamwidth Studios