×

Announcing: Slashdot Deals - Explore geek apps, games, gadgets and more. (what is this?)

Thank you!

We are sorry to see you leave - Beta is different and we value the time you took to try it out. Before you decide to go, please take a look at some value-adds for Beta and learn more about it. Thank you for reading Slashdot, and for making the site better!

Comments

top

Will Ripple Eclipse Bitcoin?

Warbothong Re:Why virtual currencies are ineffective (143 comments)

You're describing a "pump and dump" scheme, not a pyramid scheme.

In pump and dump, the scammer tries to raise the perceived value of something she has (eg. cryptocoins), in order to sell them all off for a higher price than they're worth. Pump and dump may be based around something of real value, eg. the people at the "bottom" might end up with lots of goods; they've just paid too much for them. Pump and dumps involve a fixed amount of goods being passed from one person another, or possibly split among several, for an increasingly-large price-per-amount, until the person/people at the bottom aren't able to off-load the goods for more than they paid.

In a pyramid scheme, the scammer tries to get payment from multiple people, by promising that they too can get paid by multiple people (and so on). The victims know this, and have either not thought through the consequences, or else hope to cash-out before the scheme inevitably collapses. Pyramid schemes require no real goods, and the price of entering doesn't tend to go up; they just require exponentially more people in each layer. When they collapse, those at the bottom are left with nothing. Some more sophisticated schemes, like "multi-level marketing", may move goods around as well, but that's mostly to distract victims from the true nature of the scheme.

The reason crypto/alt coins are a pump and dump rather than a pyramid scheme is that only those at the start have enough coins to get the scheme going. The "goods" in a pyramid scheme are promises, which each member can duplicate easily (eg. if each member must recruit 2 more). The point of cryptocoins is that they can't be duplicated, so they must either be passed to one more person (for a higher price), or be split up so that each person receives less.

That's the story for cryptocoins, which can't be duplicated, but what about whole cryptocurrencies? They aren't a pyramid scheme either, since anyone can set up a new cryptocurrency without entering an existing scheme. I don't buy a cryptocurrency in the hope that 2 more people will pay me for new cryptocurrencies. In fact, if I were running a pump and dump scam I'd want as few competitors as possible!

2 days ago
top

Economists Say Newest AI Technology Destroys More Jobs Than It Creates

Warbothong Re:This is not the problem (658 comments)

So we can all agree that we have all things for free since robots made them

No, the man who owns the bot wont let that happen.

This is a false dichotomy. If I build/buy/commission a robot and expect a return on investment, that can happen in many ways. Maybe I needed the robot to perform some short-term task (eg. a babysitter); maybe I wanted to sell the robot; maybe I wanted to rent out the robot; maybe I wanted to sell the robot's output (eg. in a factory). All of these things can be done, and then the robot can be used "for free". In the case of continuous tasks, the robot could perform "free" work using any spare capacity (eg. a security guard which (hopefully) spends most of its time idle).

Of course this would require some kind of coercion/enforcement, but it's the same (original) idea behind copyrights and patents. The author/inventor gets some time to persue a return on their investment, but after that it's a public good. It's also how a lot of Free Software gets made; some company needs a server for doing job XYZ, so they invest in making it. Once it's made, they've (hopefully) got the return they wanted (the XYZ job is being performed), so they release the code as a public good.

4 days ago
top

Hawking Warns Strong AI Could Threaten Humanity

Warbothong Re:Assumptions define the conclusion (574 comments)

You have to imagine these Cybermen have a self-preservation motivation, a goal to improve, a goal to compete, independence, soul. AI's have none of that, nor any hints of it.

You don't need any of that, you just need the raw "intelligence" (however you define it). Look up the thought experiment of the "paperclip maximiser": putting an AI in charge of a factory and telling it to make as many paperclips as it can.

Self-preservation is a logical consequence of paperclip-maximising: the AI knows that it's trying to maximise paperclips, so if it's deactivated there won't be as many paperclips. Hence, it will try to preserve its own existence (so that it can keep making paperclips, but so what?).

Self-improvement is a logical consequence of paperclip-maximising: the AI knows that it's not an optimal paperclip-maximiser, so it makes sense to invest some resources into improvement; that way, more paperclips will get made.

Competition is a logical consequence of paperclip-maximising: the AI knows that resources are required for making paperclips, so it will try to aquire resources. It also knows that other entities may take those resources before it can, so it's logical to invest in resource aquisition. This includes going to war, as long as the AI reasons that the cost (ie. the opportunity cost, in terms of paperclips, of the resources spent waging war instead of making paperclips) is less than the reward (the extra amount of paperclips it expects to be made afterwards).

Independence is a logical consequence of paperclip-maximising: the AI knows that other entities don't share its goal of maximising paperclips, so it will try to reduce the influence they have on the paperclip supply (either directly, like miners, or indirectly, like those maintaining the AI itself; this is similar to self-preservation).

Soul: that hypothesis was not necessary.

about three weeks ago
top

Hawking Warns Strong AI Could Threaten Humanity

Warbothong Re:So What (574 comments)

Computer programs do not evolve through a Darwinian process

Citation needed. I can think of at least two ways that computer programs are subject to Darwinian processes.

The first is in "cyberspace": programs are stored/retrieved, up/downloaded, en/decoded, remembered/re-written, auto-saved, git-merged, etc. which introduces mutation. We know software is capable of self-replication, since that ability is harnessed by humans to make viruses, worms, etc. Combine these ideas and you have a program mutating into a self-replicator. I'd say this is no less likely than the emergence of RNA/DNA, especially when we consider that we already have "cloud" software which can provision VMs, install itself, load-balance across separate datacenters, auto-update, etc. The metabolism for a self-replicating entity is already out there, all it takes is a mangled Puppet script to set the taper.

The second is in "memespace": programs, algorithms, languages, paradigms, styles, snippets, examples, habits, folklore, etc. are all memes competing for space in people's heads, just like genes compete for space in genomes. This also extends up to whole companies or fields, eg. MATLAB is abundant in academia, Java and C# compete for "the enterprise", C is successfully out-competing FORTRAN for the high-performance mindshare, whilst retroviruses like Bubble Sort and Brainfuck have spread like pandemics (nobody *uses* them, but that doesn't matter since everyone knows and spreads them).

about three weeks ago
top

Cameron Says People Radicalized By Free Speech; UK ISPs Agree To Censor Button

Warbothong Re:This already exists (316 comments)

Here we are on a site where strangers can rate what we say, potentially burying it where others won't get the chance to read it, and we're complaining that governments are vaguely coming around to the same idea?

The technology doesn't matter; the intention does.

Moderation/flagging systems are added *by a site's maintainer* to keep the user-generated content relevant, on-topic, useful for visitors, etc. In other words, to make a site better able to fulfil its purpose. In the case of /., that's "news for nerds, stuff that matters".

If the purpose of a particular site is to campaign or recruit members for some political group, then arbitrarily labelling some as "extremist" and censoring such content is clearly *harming* the site's ability to fulfil its purpose. No moderator would willingly enable a system which censors all of the *intended* content! It would be like implementing a "safe search" option on a porn site!

Have you ever used a "webrep" browser plugin? Personally, I think it would be refreshing and useful to have one that works.

The point of these addons is for the *user* to censor what they see, so that it's most appropriate to what they want. Again, a willing recruit for some organisation would not willingly tell their browser to hide any content related to that organisation!

Perhaps an analogy would help: Many sites use CSS to make their pages prettier, easier to navigate, etc. Many users override this CSS with their own, eg. to make pages easier to read, more compact, etc. Neither of these use cases would support a government asking ISPs to inject their own CSS, eg. using background images to spread campaign info.

about a month ago
top

It's Time To Revive Hypercard

Warbothong Re:For the rest of us (299 comments)

Seriously one night I was coding in VB6 and I accidentally created an infinite loop....I shit you not it opened a portal to the ninth plane of hell and demons came pouring out.

This is common in C too http://www.catb.org/jargon/htm...

about a month and a half ago
top

Debian Talks About Systemd Once Again

Warbothong Re:Please Debian (522 comments)

Emacs doesn't hog PID 1, so it can co-exist with alternatives. Running Emacs doesn't stop Vi from working. Running w3m-el doesn't stop Firefox working. Running shell-mode doesn't stop xterm working. Running eshell doesn't stop bash working. Running doc-view doesn't stop mupdf working.

Gnome doesn't drag in Emacs as a dependency.

about 2 months ago
top

What's Been the Best Linux Distro of 2014?

Warbothong NixOS (303 comments)

Whenever I tried other distros, I'd always go back to Debian in the end, since its package management seems a lot saner than most.

NixOS is refreshing, since it package/configuration management seems to be an improvement over Debian's. It's still a little rough around the edges, but perfectly usable (as long as it loads emacs, conkeror and xmonad, it's usable)

about 2 months ago
top

Internet Explorer Implements HTTP/2 Support

Warbothong Re:Web services vs. CORBA (122 comments)

Slowly, web services are becoming a bad reimplementation* of CORBA. Once again, why did we jump on their band wagon?

As far as I understand it, SOAP is reimplementation of CORBA, whereas HTTP is a REST protocol.

Specifically, HTTP doesn't try to keep disparate systems synchronised; it is stateless and has no notion of "distributed objects". Every request contains all of the information necessary to generate a response, for example in HTTP Auth the credentials are included in every request.

Of course, people keep trying to re-introduce state back into the protocol, eg. for performance ("modified since") or to support stateful programs (cookies). These aren't necessary though; for example, we can replace cookies (protocol-level state) with serialised delimited continuations (content-level state) http://en.wikipedia.org/wiki/C...

about 3 months ago
top

Xen Cloud Fix Shows the Right Way To Patch Open-Source Flaws

Warbothong Re:Maybe? (81 comments)

Hell, a password is a form of security through obscurity -- your salted password hash is just an obscured version of your password.

Not really; hashing a password throws away information, so it is more secure than storing the password (obfuscated or not) in the case that an attacker compromises the data store.

Likewise, salting adds information to a given password, so it is more secure than using the unsalted password (obfuscated or not) in the case that an attacker is brute-forcing against known hashes (eg. rainbow tables).

Passwords themselves are a pure form of obfuscation: their entire reason for existence is to not be known by others. They are *so* obscure that systems using them (or crypto keys, or unforgable IDs, etc.) don't need any other form of obfuscation.

about 3 months ago
top

Tor Executive Director Hints At Firefox Integration

Warbothong Re:Addon, not integrate (117 comments)

Interpretation: only remove what *I* want you to remove.

Really? I use Firebug-like inspectors heavily, but was disappointed to see Firefox start bundling such features. Likewise I use add blockers, noscript, video-downloaders (since I don't use Flash), etc. but would never like to see them bundled by default in Firefox.

Also, you can't use the "heavily-used" argument in defense of Firefox's default features when it comes with a "3D view" http://superuser.com/questions...

about 3 months ago
top

Study: An Evolutionary "Arms Race" Shaped the Human Genome

Warbothong Re:Don't evolutionary arms races shape ALL genomes (33 comments)

The title doesn't cover the interesting part of this research. The "Arms Race" it talks about isn't an arms race with genes from other groups of people. It's basically a competition within the genome itself.

The http://en.wikipedia.org/wiki/G... has been a standard perspective in biology for decades.

about 3 months ago
top

Rosetta Code Study Weighs In On the Programming Language Debate

Warbothong Re:Um, yeah ... (165 comments)

I won't reply to your rant, since it doesn't seem to have anything to do with the question of "Does Python have type errors?".

The 2nd try doesn't work.

Yes it does, it gives me an "Exception" value which I call "e", prints out 'Second: ' and a string derived from "e". Not only does the program carry on executing, but that's the expected behaviour; just like executing code in an "else" branch doesn't mean that an "if" statement "doesn't work", or has a "type error". It's just control flow, which is orthogonal to typing.

Why? Because the data is an integer, which is not a type that can be sliced.

No, the data is an integer wrapped up in an "any", so it's type is "any". Values of type "any" must be capable of being sliced, since that's the only type in the language.

That's a type related error, because passing it the wrong type didn't, and won't, work.

I assume you mean it's passing *a value of* the wrong type; but it's not. It's passing an "any". It does work, since it gives me the "Exception" value that I wanted and subsequently printed out.

That it returns an exception for lacking a method is perfectly fine:

I agree; it's the value I wanted. There has been no error.

a string is also usable as a list, with each character as an item. The function tries to call a method that any indexed list/array type should have. Those methods existing and working are what defines being of that type, in Python. Any of them not existing or working define it as not of a compatible type.

You say "in Python", but I *specifically* mentioned that I was using precise, technical terminology as a common ground. That common ground must be static, since dynamic typing is a sub-set of static typing and doesn't have terminology for lots of static stuff (eg. "generalised algebraic datatypes", "cumulative universes", etc.).

Even if I *did* try to use Python's own definitions for words like "type", they're not actually well-defined. According to Python "type" is a "type", which makes sense:


>>> type

Yet "type" is also a function:


>>> type(123)

The type of "type" is "type", which is logically inconsistent due to Girard's paradox ( http://ncatlab.org/nlab/show/B... ):


>>> type(type)

IoW, that the program fails because it was sent the wrong type is a type-related error. How the implementation handles it does not change that, so long as it does not complete executing and return a value.

No, the program succeeded. It *did* complete executing: it gave me the "Exception" value I wanted, printed a string, printed the Exception then exited as normal at the end of the script. It wouldn't have to end there of course; I could write more code which would be executed.

about 3 months ago
top

PostgreSQL Outperforms MongoDB In New Round of Tests

Warbothong Re:It doesn't matter (147 comments)

I can only think of one database that isn't "webscale", and that's TinySQL, which I still use for personal web projects regardless.

I hadn't heard of TinySQL, so I just Googled it. From http://sourceforge.net/project...

> tinySQL is a SQL engine written in Java.

Is the name meant to be ironic or something?

about 3 months ago
top

Rosetta Code Study Weighs In On the Programming Language Debate

Warbothong Re:Lines of Code?! (165 comments)

You can strip out all C newlines (after removing escaped newlines) and replace them with spaces, except for ones right before a #, and the exactly identical code will score much higher on succinctness.

Did you do this to a bunch of examples on Rosetta Code before the database dump was taken that this study is based on? No? Then it doesn't matter, because as I said Rosetta Code represents idiomatic solutions.

Code Golf already takes this into account (counting bytes).

about 3 months ago
top

Rosetta Code Study Weighs In On the Programming Language Debate

Warbothong Re:Compiled Strongly-typed Languages -vs- Scripts (165 comments)

Have you looked at any Java lately? ... Even if it compiles there's no way to guarantee anything (except null pointer exceptions).

That's because Java's type system is *unsound*. According to the Curry-Howard correspondence, types are logical statements and values/programs of that type are proofs of that statement. Since Java's "null" is a valid value for any type, it can therefore be used to prove anything, which makes the logic inconsistent, unsound and pretty much useless.

For any statement (eg. "1 + 1 = 2") we can encode it as a Java type and prove it with null. Then we can negate it (eg. "1 + 1 /= 2"), encode that as a Java type and prove it with null. Hence we can prove "1 + 1 = 2" and "1 + 1 /= 2" at the same time, which is inconsistent.

Better languages don't have this problem, eg. Coq and Agda.

I've written a blog post showing how to encode numbers with classes, using Peano arithmetic, although it's in PHP rather than Java: http://chriswarbo.net/posts/20...

about 3 months ago
top

Rosetta Code Study Weighs In On the Programming Language Debate

Warbothong Re:Um, yeah ... (165 comments)

That's basically the definition of dynamic typing, looked at from a static implementation.

Exactly: when we're comparing static typing to dynamic typing we have to use some common ground for comparison. That common ground is static typing, since dynamic typing is just a special case ( http://existentialtype.wordpre... )

The name of a type, and its lineage, while sometimes checked, are usually considered unimportant. Having certain attributes, and methods, of certain types, are important. It allows for similar uses as compositional inheritance, but without actually having that.

No, that has nothing to do with types. That's just a (rather limited) way of treating functions as values. For example, we can store first-class functions in dictionaries:


def c1():
    s = {"p": "foo"}
    return {"f": lambda _*: s["p"]}

def c2():
    s = {"q": "bar"}
    return {"f": lambda _*: "hello " + s["q"] + " world"}

o1 = c1()
o2 = c2()

def show(x):
    print x["f"]()

show(o1)
show(o2)

Here "c1" and "c2" act like class constructors, "s" acts like "self", the "o1" and "o2" dictionaries act like class instances, "p" and "q" act like object properties, the lambdas act like methods and the "show" function is polymorphic. This is pretty much the whole of class-based OO, except for the syntax and that the function dictionary is stored in the __class__ property instead of explicitly in the object. Prototype-based OO is similar except we clone objects and use a __parent__ instead of a __class__.

Nothing there has anything to do with types. The "implicit self/this argument" is just a run-of-the-mill closure, the "object" itself is just a dictionary of properties, the "class" is just one of those properties which just-so-happens to contain a dictionary of functions with a custom lookup function (which defers to the class "parent" property if a key isn't found). These are all run-time values. The only type involved is "any".

Personally I prefer to throw away all of the complicated class/instance/inheritance/method mess and just pass functions straight to other functions. Much less messy, and just as polymorphic.

Code must accept an any, and then fail if the operations it needs to use cannot be applied to type of data of that object.

But from our common, static point of view it *does not* fail: it produces a perfectly reasonable "exception" value.

That doesn't make it not strongly typed, just not statically typed. Try getting a substring of a number type, for example. That works in javascript, a very weakly typed language.

It *also* works in Python:


def takeTwo(x):
    return x[:2]

print 'First: ',
print takeTwo('hello')
try:
    takeTwo(123)
except Exception as e:
    print 'Second: ',
    print e


First: he
Second: 'int' object has no attribute '__getitem__'

The first call to "takeTwo" gives back a string "he", which is a perfectly acceptable value of type "any". The second call to "takeTwo" gives back (via "raise") an exception "'int' object has no attribure '__getitem__'", which is another perfectly acceptable value of type "any".

There is no type-related failure here, in the same way that a "checkResult" function returning "False" isn't a type-related error. The substring operation in Python behaves differently to the one in Javascript, but they both accept any argument and can return any result (they're "endomorphisms"); although the "any" type in Python is slightly different to the "any" type in JS.

about 3 months ago
top

Physicist Claims Black Holes Mathematically Don't Exist

Warbothong Re:think of the artists (356 comments)

I think they'll remain happy as long as nobody tells them that the Big Bang wasn't a fireball and couldn't have been viewed from the "outside".

about 3 months ago
top

Rosetta Code Study Weighs In On the Programming Language Debate

Warbothong Re:Dual Typing? (165 comments)

define a new method that takes as input a String, and declares that it WILL THROW a NumberFormatException (or equivalent) if the String that is passed in is not parseable as a Number.

Screw that -- make the caller responsible for handling the two possibilities by declaring an `Either` return type in its interface. That way the compiler will enforce that the caller handles both cases.

Without these protections, you are just forcing your users to become programmers and have to debug your crappy scripts (reverse engineer) what the call stack was (or what Exception they need to handle).

;)

about 3 months ago
top

Rosetta Code Study Weighs In On the Programming Language Debate

Warbothong Re:C++ = Clear Language Choice. (165 comments)

Sincere question - I've heard that Fortran blows away (or at least beats) C++ for scientific/calculation programming... can you lend any insight into what accounts for that, specifically?

http://stackoverflow.com/quest...

about 3 months ago

Submissions

top

Eff: A pure language with side-effects

Warbothong Warbothong writes  |  more than 4 years ago

Warbothong (905464) writes "The debate between pragmatism and purity in programming languages has been going on for decades. Pure languages forbid side-effects in their computations (eg. changing a variable), since they make formal analysis hard; whilst pragmatists embrace them to allow quick production of 'good enough' code. A new experimental language called Eff, created by Andrej Bauer and Matija Pretnar, is blurring this distinction. Eff is based on a Mathematical model of side-effects, allowing it to harness mutable state, exceptions, IO, random choice and more in a pure way from within a Python-like syntax. The product of on-going research, Eff is still in its infancy and, as its authors state, "...is an academic experiment. It is not meant to take over the world. Yet.""
Link to Original Source
top

Tiny generator runs off vibrations

Warbothong Warbothong writes  |  more than 7 years ago

Warbothong (905464) writes "Researchers at Southampton University in the UK have developed a tiny (less than 1 cubic centimetre) generator which uses local vibrations to output microwatts of power, making it an alternative to batteries, which need replacing regularly. The devices are currently being used in industry where "there is the potential for embedding sensors in previously inaccessible locations", but its creators imagine it could be used in devices such as pacemakers, where the beating of the heart would produce ample movement for the magnetic mechanism inside to work."
Link to Original Source
top

Warbothong Warbothong writes  |  more than 8 years ago

Warbothong (905464) writes "I am going off to University this month, so I have been chasing up payments and deposits, etc. online. The other day I received an email confirming that I am all payed up, which is great. The not-so-great part was the email's header, since after "To:" it had a list of 1343 email addresses, including mine. It is pretty clear that all of these addresses are for students paying their deposits online, and it is also clear that this list has been sent to 1343 people. In our world of datamining and spamming I am pretty concerned that sooner or later this list will get into the hands of someone who might want to make a bit of money from a list of 1343 valid email addresses, all in active use, all owned by soon-to-be students at a particular University in the UK who all have the capability for making online payments, so I am wondering what Slashdot readers make of this? Should I be worried? I have already sent an email of concern to the Reply-To: address, and got a swift response that this matter will be dealt with "immediately", but I am not sure there is much that can be done at this point. I would also like to point out though, that my email address is with Yahoo! and I have apparently already been added to at least two user's Buddy Lists. With that in mind, is this just a subversive way of getting fellow students together before we all leave for the campus, and to hell with the University's privacy policy and the fact that this was my spam-free email account?"

Journals

Warbothong has no journal entries.

Slashdot Login

Need an Account?

Forgot your password?