top | item 11450385

Executable code snippets in Bing

152 points| bufbupa | 10 years ago |techcrunch.com | reply

50 comments

order
[+] georgewfraser|10 years ago|reply
This uses Monaco, the code editor behind Visual Studio Code (https://code.visualstudio.com) and Typescript Playground (https://www.typescriptlang.org/play). I've spent time with ACE, CodeMirror, and Visual Studio Code, and Monaco puts everything else to shame. Hopefully soon they will provide better documentation of how to use Monaco in your own projects, there's an issue for it: https://github.com/Microsoft/vscode/issues/446
[+] amelius|10 years ago|reply
Could you elaborate a little? In what way(s) is Monaco superior?

In my view, CodeMirror is pretty decent, and it seems to me that not much can be improved upon it. But I haven't had the chance to compare it to anything else.

[+] chippy|10 years ago|reply
Early adopters are HN readers, this is very smart from Bing - maybe we will see the same soon in DuckDuckGo?

Why is it smart? Every major internet service is driven by it's early adopters. Every major service is built and designed by people like us, hacker news readers, techies, early adopters. But of course, not all services, especially those who want to be massive are targeted to early adopters anymore - they wrongly target the masses. To attract people to use your service, you have to have the early adopters first, they have to attract us first and then target the masses. Thus, we are seeing Bing take a page from DuckDuckGo in tailoring some parts of its service towards techies. It's a clever move.

[+] irremediable|10 years ago|reply
I've seen this mentioned in things like The Lean Startup, but never as the focus. Do you know any books/studies/similar about targeting early adopters?
[+] bootload|10 years ago|reply
"HackerRank co-founder Vivek Ravisankar tells me the project currently features over 80 code snippets that focus on the most commonly searched terms. Microsoft is positioning this as both a productivity and learning tool."

Good startup idea could be found in this audience. Solve the coding problems through searching for code. Just do it better than bing. [0]

[0] "The way to win here is to build the search engine all the hackers use. A search engine whose users consisted of the top 10,000 hackers and no one else would be in a very powerful position despite its small size, just as Google was when it was that search engine." ~ http://paulgraham.com/ambitious.html

[+] squeaky-clean|10 years ago|reply
Pretty cool when it appears. You can edit it, and the examples are written in a way that the output helps explain the flow (like showing the pivot and array state in each pass of a quicksort). I'm surprised it doesn't support Javascript though, since it's now so popular.

It also doesn't seem to support anything advanced or synonyms for terms. I can search for "Reverse array python" but not "Reverse list python" (technically a list is the proper name, and array is a different construct in Python), and anything more advanced than sorting algorithms or simple features don't appear. I tried a few pathfinding algorithms, fibonacci sequence, prime numbers.... And I tried several variations of search terms. "Pathfinding in Pyhton" / "Graph Search in Python" / "Djikstra's algorithm in Python", nothing. I don't think it will be very useful because of this.

[+] anilgulecha|10 years ago|reply
I worked on this project. We're building up the list of samples of additional programs/queries, so the number of queries you should see the editor for will expand in the coming days.
[+] dc2|10 years ago|reply
DuckDuckGo implemented something similar a few weeks ago:

http://duckduckhack.com/

This is probably Microsoft's response.

[+] feintruled|10 years ago|reply
Well, I doubt they could throw something this slick together in a copule of weeks! Also, that DuckDuckHack looks to be something very different. I couldn't find anywhere that allows you to sandbox code on it. Seems to need to upload to a github repo first? What actually does it intend to be?
[+] amluto|10 years ago|reply
Running this is amusing:

  import os
  print '\n'.join(os.listdir('/'))
Personally, I'm partial to running IPython under Sandstorm for this kind of thing. (Also, if I were to host it, I'd be very nervous about any technique not involving equal or greater paranoia.)
[+] cha5m|10 years ago|reply
Wow. Finally an actually decent bing feature. I hope this spurs google to improve their support for non alphanumeric characters.
[+] bru|10 years ago|reply
Doesn't work here. None of the given examples triggered the feature.
[+] S4M|10 years ago|reply
Same here. Maybe it's just enabled for US IPs or something.
[+] ethana|10 years ago|reply
Adblock is preventing bing from loading some data.
[+] hartator|10 years ago|reply
I think it's weird to see Bing introducing new features first.
[+] ideal322|10 years ago|reply
It's one of the first times in a long time that Bing has partnered with another company. HackerRank for the win!
[+] cmdrfred|10 years ago|reply
Microsoft is really aiming for the dev market lately.
[+] blazespin|10 years ago|reply
Google used to have code search but killed it.
[+] jon_richards|10 years ago|reply
They also killed being able to search for symbols. That still bugs me.
[+] palakchokshi|10 years ago|reply
I can see this being abused for phone screen technical interviews :) but I do search for code snippets when I'm learning something new so this is great.
[+] quadrature|10 years ago|reply
theres already stack overflow for that.
[+] sremani|10 years ago|reply
Not only you get the result code, but you can edit the code and run it. Nice!!!
[+] koolba|10 years ago|reply
The sandboxing is interesting ... Each process is running in a directory on the same server.

Also there's some files that are visible that probably shouldn't be, including one named "codechecker-android-release-key.keystore"...

For the curious, try running the code block. You can uncomment/commment things out to see different results as there's a cap on the amount of stdout printed.

    import java.net.URLClassLoader;
    import java.io.*;
    import java.net.*;
    
    class  Solution
    {
    	private static void printFile(String path) throws Exception {
    		System.out.println("File: " + path);
    		InputStream in = new FileInputStream(path);
    		byte buf[] = new byte[1024];
    		int len;
    		while( (len = in.read(buf)) > 0 ) {
    			System.out.write(buf, 0, len);
    		}
    		System.out.flush();
    	}
    	
    	final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
    	private static String bytesToHex(byte[] bytes) {
    	    char[] hexChars = new char[bytes.length * 2];
    	    for ( int j = 0; j < bytes.length; j++ ) {
    	        int v = bytes[j] & 0xFF;
    	        hexChars[j * 2] = hexArray[v >>> 4];
    	        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    	    }
    	    return new String(hexChars);
    	}
    
        private static void printFileHex(String path) throws Exception {
    		System.out.println("File: " + path);
    		InputStream in = new FileInputStream(path);
    		ByteArrayOutputStream out = new ByteArrayOutputStream();
    		byte buf[] = new byte[1024];
    		int len;
    		while( (len = in.read(buf)) > 0 ) {
    			out.write(buf, 0, len);
    		}
    		byte bytes[] = out.toByteArray();
    		System.out.println(bytesToHex(bytes));
    		System.out.flush();
    	}	
    	
    	public static void main (String[] args) throws Exception
    	{
    		Class<?> clazz = Class.forName("java.lang.ClassLoader");
    		URLClassLoader cl = 
    		  (URLClassLoader) Thread.currentThread().getContextClassLoader();
    	    System.out.println("Classpath:");
    		for(java.net.URL url : cl.getURLs()) {
    			System.out.println("" + url);
    		}
    		File local = new File("");
    		System.out.println("Local path: " + local.getAbsolutePath());
    		
    		System.out.println("Files:"); 
    		File root = new File("/");  
    		String list[] = root.list();		
    		System.out.println("# root files: " + list.length);
    		
    		//printFile("/etc/passwd");
    		printFileHex("/etc/codechecker-android-release-key.keystore");
    		
    		System.out.println("# root files: " + list.length);
    		for(String base : new String[]{ "/etc", "/bin", "/sbin", "/usr"}) {
    		  for(String name : new File(base).list()) {
    		     System.out.println(base + "/" + name);
    		  }
    		}
    	}
    }
[+] anilgulecha|10 years ago|reply
You can read more about the environment here: https://www.hackerrank.com/environment

We have a cluster of codechecker servers of the above type, which share the load of incoming queries. On each, sandboxing is via a chroot-based system. Programs get a fixed amount of memory/time.

Re: the codechecker keyfile - we're looking into this, as I'm not an android expert - but quick searching tells me this is used to sign apks. Our codechecker supports android builds, so that's probably what this is used for. This key is not used to sign anything official (like throwaway id_rsa you create when needed). Again, I'm not the expert on this and I'll add a confirmation here shortly.

That said, if anyone finds something a vulnerability/way out of the sandbox, please shoot me a mail (anil @ hackerrank) if you'd like to do a private disclosure.

[+] riyadparvez|10 years ago|reply
Given that so many vertical features can be integrated in a search engine, this seems very odd choice.
[+] nimesh159|10 years ago|reply
This is amazing. You should do similar engagement with Google search also!
[+] bovermyer|10 years ago|reply
Oh man, that is REALLY cool. I may actually have to use Bing now.
[+] tomnikl|10 years ago|reply
Cool to see it in Bing. Hope Google follows suit soon.
[+] derwiki|10 years ago|reply
Not to be flippant, but.. I assumed most coders use Google / DuckDuckGo. I seem to remember reading that even coming from Microsoft offices, engineers prefer Google to Bing. Does that make this simply a PR move?
[+] tsurantino|10 years ago|reply
You're right - Bing shouldn't bother improving it's product for potential new users because people prefer to use other products which don't have these features...
[+] joshmn|10 years ago|reply
I'm sure that most coders use Bing for certain things.

Bing Video to be exact.

(we all know it's true to an extent)