Earlier: Yglesias makes it big - "how is a journalist able to afford a million-dollar home?"

Now: Vox’s Puff Piece on Goldman Sachs Doesn’t Reveal Goldman Sponsors Vox

Vox’s Matthew Yglesias (4/25/16) gave a generous write-up to Goldman Sachs’ new commercial banking subsidiary, GS Bank, without noting that Goldman Sachs is a sponsor of Vox.

One of the revelations from the Panama Papers:

Among those companies is the Russian Sberbank, whose U.S. investment banking branch recently enlisted the services of the Podesta Group. According to its lobbying registration form, the firm will work on banking, trade, and foreign relations issues.

One of the three lobbyists working on the account is Tony Podesta, a bundler for the Clinton campaign and the brother of campaign chairman John Podesta, who co-founded the firm.

Previously: the Podesta Group lobbied for Russia to buy 20% of US uranium mining rights.


Probably related: Some natsec tweeters are endorsing a dead cat as the least bad candidate in this election. It is difficult to imagine a persuasive counterargument.

Wikileaked Hillary Clinton email #12166, dated July 25, 2012, shows Jared Cohen of Google Ideas working with al-Jazeera to develop a list of defecting Syrian officers and to encourage further defections. Quote:

Please keep close hold, but my team is planning to launch a tool on Sunday that will publicly track and map the defections in Syria and which parts of the government they are coming from. Our logic behind this is that while many people are tracking the atrocities, nobody is visually representing and mapping the defections, which we believe are important in encouraging more to defect and giving confidence to the opposition. Given how hard it is to get information into Syria right now, we are partnering with Al-Jazeera who will take primary ownership over the tool we have built, track the data, verify it, and broadcast it back into Syria

Cohen's email was sent to William J. Burns, Deputy Secretary of State; Jacob J. Sullivan, national security advisor to Hillary Clinton; and Alec Ross, Senior Advisor for Innovation in the State Department. Sullivan forwarded Cohen's email to Clinton, who forwarded it to her aide Monica Hanley.

Previously, al-Jazeera hosted exiled Egyptian Muslim Brotherhood leaders who had given al-Qaeda free rein over Egypt. Also, the US support for extremists in Syria got so bad that a member of the Joint Chiefs of Staff defected to Russia to try to stop it.

Jared Cohen has a reputation as a loose cannon, "doing things the CIA cannot do", with White House and State Department support. Interestingly, Hamas allowed him to travel to Gaza for reasons that the people at Stratfor were not aware of.

The Independent is set to fire 5/8 of its journalists and go online-only. All those dismissed should get together, agree to work for minimum wage for a while, and make a new newspaper called the Insolvent.

This follows The Telegraph getting captured by HSBC.

Previously I imagined an X-files spinoff set in the South, similar to how CSI has spinoffs in different cities. Here's another story in the same universe. Read more... )

An ideally secure network will have certain features:

  • Encrypted contents: MITM attacks cannot determine what data is moving across the network.
  • Encrypted storage: Those with physical access to a network node cannot tell what data the node contains.
  • Redundancy: The network can survive the removal of any node without loss of data.
  • Expansion: The operator can raise new nodes with minimal effort.
  • Immunity: The network can resist the insertion of fraudulent nodes by a hostile party.

Basically, an encrypted cloud with encrypted transportation running on servers with encrypted disks.

Advanced features:

  • Confusing transportation: Upon intercepting and decoding a message, an observer cannot identify the sender or intended recipient.
  • Invisible transportation: The network cannot be identified unless the observer is looking for it.
  • Obscured transport method: An observer will have difficulty determining that observed traffic is part of the network. For example, data sent over DNS or ICMP may be ignored by most observers.
  • Obscured transmission method: An observer with physical access will have difficulty observing that the transmission is taking place. For example, there was a virus that communicated with other infected systems in the same server room using sounds outside of human hearing range through a computer's speakers and microphones.

zdnet lists five cloud systems: Openstack, Docker, KVM, CloudStack, Ceph. Docker is reportedly popular.

Ceph is a distributed storage engine. The others seem to be different types of products.

The closest to an off-the-shelf system might be:

  1. Use Ceph
  2. Run every Ceph instance on an encrypted HD
  3. Run every intermediary connection through an encrypted tunnel
  4. Run the tunnels through tor?
  5. Develop a generic method of raising a new node and adding it

As an update to the earlier post about a Prince Mohammad al Fatih al Bahraini being killed while commanding al-Qaeda forces in Bosnia in 1992, two pieces of evidence add weight to this story.

During the September 1992, the first Mujahedin offensive operation against the Serbs was carried out, under the leadership of the Bahraini Prince Muhammad Al-Faatih Al Bahraini, with Sheikh Anwar Sha'baan, as second in command. The Bosnian Muslim forces had been formed, and Allah willed for them to join the Mujahedin. A group of them participated in the operation. The Mujahedin moved towards the Serb front line, penetrating and gaining control over these areas, inflicting heavy defeats on the enemies of Allah. At this time the Bosnians did not have a complete understanding of the Islam, of [inaudible], and the understanding of why they were fighting. In addition to this, the limited military capabilities of the front line meant that they were unable to hold their positions due to the heavy Serbian shelling.

(...cutting empty rhetoric...)

THE NARRATOR: [In English] Abu Shareef was from the first people to arrive in the land of Jihad of Bosnia on the same ship that was carrying Al-Faatih, and Allah willed for them both to be killed in the first operation against the Serbs. Abu Shareef had participated in the Afghan Jihad. Then he moved to a European country. Upon hearing of the tragedy that had befallen the Muslims in Bosnia he answered the call of his Lord.

As to the say in which he was killed after the death of Al-Faatih, in the physical operation the brothers decided to take his body away. Abu Shareef had the responsibility of providing cover for the brothers with a PK machine-gun whilst they were removing Al-Faatih's body. Then Abu Shareef was hit by a piece of shrapnel on his arm, and a moment later he was hit by a mortar shell which killed him and Abu Anas Al-Jeddawi so they joined their brother Al-Faatih.

The tape goes on to discuss al-Qaeda's oft-forgotten attacks on Croatian forces, in one case "taking women and children as prisoners, to be handed to the Bosnian army", a probable euphemism for selling them into slavery. A contemporary news report backs up that fighting occurred between the Croats and Muslims, and an AFP report accuses the mujahids of killing 200 civilians. It still amazes me that NATO took the side of these Muslims against Fikret Abdic's forces. Another blogger notes that Kosovo and Bosnia are now the primary recruitment grounds for ISIS.

As for the prince himself, we do not have enough information to know that he is a prince or his real name. "Mohammed al-Fatih" is the title of the conqueror of Constantinople so it is likely a nom de guerre.

A long time ago the w3c proposed new standards for web forms to supplement the simple first-generation forms. They were heralded as a step forward in web development, but no browser ever implemented them. Their current status in Mozilla:

Bug 97806 - Implement W3C XForms in browser and composer - Status: RESOLVED WONTFIX

Comment 111 Robin Whittleton 2013-04-10 06:47:31 PDT
I’m guessing this is a WONTFIX now that they’ve been marked as obsolete on MDN? https://developer.mozilla.org/en/docs/XForms

Comment 112 Benjamin Smedberg [:bsmedberg] 2013-04-10 06:54:28 PDT
Indeed, we would not accept an implementation even if somebody wrote it.

PC-BSD needs a better startup system

It's 2015 and we still haven't fixed init systems yet.

  • Problem: Duplication of code in the scripts. For example, every script contains code that checks to make sure the script is not disabled. This is best handled by the caller.
  • Problem: Startup scripts are disabled by looking for the name of a magic word in the startup script and manually adding it to a global config file. This is clunky and there has to be a better way.
  • Problem: Startup waits 30s for wireless to not connect when booting my laptop away from home. I can ^C but shouldn't have to.

Goal: allow a parallel system startup Read more... )

  • Any operation may take operands (parameters, arguments). Example: function foo($arg1, $arg2, $arg3)
  • Any operands may have attributes. Example: f(long int $arg1, fancy blue dishwasher $arg2)
  • The reader (compiler or interpreter) takes operation + operands and produces instructions that will have the desired effect. This can be done at runtime or at compile time.

Operations, operands, and attributes might be seen respectively as Verbs, Nouns, and Adjectives.

The question of what instructions are to run depends upon the attributes of the operands. For the simplest example, the code "2 + x" will produce different instructions depending upon the attributes of x.

small int x = 42
return 2 + x // add ax, 2

long int x = 42
return 2 + x // add eax, 2

float x = 42.0
return 2 + x // fadd(42.0) ; adds to st0

At some point the system determines "x is an int, use integer add" or "x is a float, use floating point add". The process of compilation can be described as the resolution of high-level code to lower-level implementation. This may involve translation through intermediary languages.

An interpreted high-level language will make these determinations at run time. A compiler may make the process more efficient by stripping out all of these determinations at compile time. At the most extreme of efficiency the reader may determine that the code will always produce the same result (42+2 = 44) and insert the resulting value rather than the code to produce it.

Optimization vs. reuse

A downside of such optimizations is that it becomes impossible to modify the behavior of a program at runtime if the behavior-determining code is optimized out. Correspondingly, an advantage to keeping code unoptimized is that the program may be modified by a wrapper that changes the resolution of a function call.

A system could provide the best of both worlds by using an object format that stores both the optimized version and a high-level interpretation, and recompiling on the fly when directed to change part of the program. To allow the recompilation of one subroutine at a time, instead of rebuilding the whole program, the metadata may include a catalogue of entry points.

After seeing Episode 7, I have some ideas of where Episode 8 and 9 could go. Read more... )

The current Star Wars mania gives me Star Wars on the mind which reminds me that "Episode 1" sucked. As a shitty fanfic writer, I will ask the question: what could be changed to make the movie better? Let's skip the popular opinion of cutting Jar Jar and consider other possibilities. Read more... )

Go claims to have strings. That would be a nice feature except that most of the core library functions operate on byte arrays and you need to make an explicit cast every time you move from strings to byte arrays and back.

Do you want to interpret a boolean as an int? Fuck you.

It is difficult to define complex types such as sets of function references. The syntax that works in a parameter definition produces a syntax error when I try to cast an array. By the way, you need to cast your arrays when you define them because the compiler cannot determine that information from the array's contents.

Error handling is... different. For example, if you wanted to write to a file in any other language you would do something like this:

status = fopen("foo.txt", "w")

or:

try {
 fopen("foo.txt", "w")
} catch e {
...
}

In Golang you need to do something like this:

var writer *bufio.Writer 
f1, err1 := os.Open("foo.txt")
if(err1 != nil){
	return writer, err1
}
tmp2, err2 := io.Writer(f1)
if(err2 ! nil){
	return writer, err2
}

return bufio.Writer(tmp2)

... so you end up with long repeating branches in a function that would be a few lines in any other language.

Do you want to close the file, allow other subprocesses to work on it, and reopen it later for reading? Fuck you.

Have I mentioned that I don't like golang's error handling pattern? I don't like golang's error handling pattern.

Go gets one thing right and that is its goroutines. Parallelization of a function should be as easy as putting the word "go" in front of the function. Other languages should pick up on this.

Sorting

Nov. 29th, 2015 08:44 pm

Streamable sorting

A streamable sorting algorithm is one that has an intermediary state in which the entire set may not yet be sorted, but it can be guaranteed that some number of items at the head are sorted. For example, the bubble sort will bring the optimal item to the head of the set before the rest of the set is sorted. The sorted elements at the head may be dispatched while the sorting algorithm continues to run on the remainder of the list.

The use case is to pipe data to a different operation in a multi-stage process so that the entire process will be completed more quickly than if the process had waited for the set to be sorted. This could be in shell scripting or any I/O bound transfer of data. Another use case is in a user-facing interface where the appearance of doing something is more important than total runtime.

Speed considerations

A strong argument against use of a streamable sorting algorithm is that non-streamable algorithms are so much faster than the bubble sort that the process is likely to complete sooner if one chooses the better algorithm and waits for it to complete.

Made-up example:

  1. Algorithm A will sort in 10 seconds and can start transfering after 4 seconds because it knows that the head is optimal.
  2. Algorithm B will sort in 5 seconds, but I/O cannot begin transfer until all items are sorted.

The slower algorithm will get the data across sooner if certain conditions are true:

  1. Transfer time is slower than the sort time of the faster algorithm.
  2. The transfer process will not interfere with the sorting process. On modern multi-cpu systems this should not be a problem.
  3. The fraction of time when transfer may begin (say, at 40% of sort time) is lower than the speed of the comparable nonstreamable algorithm compared to the nonstreamable one (say, algorithm B finishes sorting in 50% of the time of the streamable algorithm). Note that this will depend heavily on the set size due to the performance differences in sorting algorithms.

Variables:

  • Tx = (Time to transfer X objects)
  • At = (start of transfer for algorithm A)
  • Bt = (start of transfer for algorithm B)

When transfer time is slower than the sorting time of either sort algorithm, the overall process is bound by when the transfer begins. The streamable algorithm will be faster when it begins transfer before the non-streamable algorithm would finish and begin transfer.

When transfer time is faster than the slower streamable sorting algorithm, the streamable algorithm is bound by its own slowness. The process will be faster than a non-streamable algorithm only if transfer time remains slow enough for (Tx + Bt) to be greater than the time needed for the streamable algorithm to finish sorting.


Dividing sort time across sender and receiver

Imagine the following:

  • We need to sort and transfer data between two systems that both need to minimize CPU use.
  • We have a sorting algorithm that divides the set into chunks and sorts the chunks over multiple passes.
  • We can predict the number of passes needed by the algorithm from the set size.

Assuming that it is still the 1990s when these limits would matter (this is more of an intellectual exercise than a serious proposal), we can divide the effort of sorting between client and server. The sender runs half of the expected number of passes and sends the data partially-sorted. The receiver finishes sorting the half-sorted data as the data is received and inserts the items coming down the pipe where they best fit.

Profile

tangaroa

April 2016

S M T W T F S
     12
345 6789
10111213 14 1516
17181920212223
24252627 282930

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 29th, 2016 10:00 am
Powered by Dreamwidth Studios