HNHacker News
TopNewBestAskShowJobs

k4st

148 karma · joined February 20, 2007

Present: C++ Developer at Hex-Rays SA. Formerly: Staff Engineer at Trail of Bits. Personal website: http://www.petergoodman.me GitHub profile: https://github.com/pgoodman
submissionscomments
k4st··on Ask HN: What are you working on and why is it cool?
Thanks, that's really flattering! I would love to hear about potential use cases that people might have for this.
k4st··on Ask HN: What are you working on and why is it cool?
I'm working on https://github.com/Granary/granary. It is a Linux kernel dynamic binary translation framework. It's cool because it lets you rewrite the Linux kernel (at different granularities) while it's running. This is useful for analysis, debugging, etc. Right now I'm putting together benchmarks for an upcoming paper deadline.
k4st··on Bugchecker.net – finds bugs in your binaries (symbolic execution)
I'll try to come up with more ideas as they pop into my head, but given that you consume a binary, I'd like to see a service that consumes core dumps and does what " Automated Debugging for Arbitrarily Long Executions" (HotOS'13) does (a sort of reverse symbolic execution for find the root cause(s) of a the failure). An extension of this idea would be to operate on arbitrary program images, perhaps multiple images, as a mechanism of doing concolic execution.

Are you using concolic execution, or thinking of going in that direction as a way of generating more runtime-specific info, e.g. execution interleavings, data sharing, common values for memory locations, hot paths, etc.

I suppose a bunch of this is probably outlined in your API or integration with one's build system, but it would be great if a lot more about the process and capabilities of this system were detailed up front. For example, I think it would be useful to make some case studies of some programs, in a similar way that the Viva64 guy does for PVS-Studio, as a way of showing people how to use your system effectively.

Otherwise, I find the traces hard to digest. Unless there is some better interface for reading things, I think it would help convince people that your product is useful if, for example, your system reported the bugs it found in a very clear way. If debug info is in the binary then that should also be referenced, etc.

Finally, a passing note: I think your biggest "competitor" is going to be a tool like AddressSanitizer and other compiler extensions. I mean, I know solving more bugs is good for everyone and whatever gets the job done means better code out there, but I assume eventually you need to make money and convince people that you're going to solve a problem that a compiler extension can't. This is kind of the situation for DBT systems now :-P

k4st··on Bugchecker.net – finds bugs in your binaries (symbolic execution)
As someone that does dynamic binary translation for kernel modules (to find bugs) and eventually wants to get into symbolic/concolic execution (to find bugs), this is cool. I would be really pleased if they're able to make a successful business out of this!
k4st··on Nidium – A new browser engine
Thanks for the explanation / link :-)
k4st··on Nidium – A new browser engine
What is the memory model of the NiDIUM js with native threading support?
k4st··on C gibberish to English
I also find this online utility useful when I don't have c++filt (another program available to Linux distros) available:

http://pear.warosu.org/c++filtjs/

This can be used to demangle C++ names.

k4st··on Introducing HipHip (Array): Fast and flexible numerical computation in Clojure
This seems like one of the 10x productivity / mastery cases where your three minutes and creativity have produced something that would take me ages, even if you set me to the task of duplicating your design.

Are you willing to spend another 3 minutes producing a logo for an unrelated programming project? :-P

k4st··on Why I am building a product with a tiny market
This reminds me a lot of the regular expression reAnimator: http://osteele.com/tools/reanimator/.
k4st··on Lessons learned defying Joel Spolsky with Django
The SQL generated appears correct, unless the underlying database can guarantee that all foreign key constraints are met. That is, I consider this a failure of the user of the ORM to appreciate that the two invocations of filter are not identical.

In the former case, the query is verifying that the object_id field cannot be used to find a foreign object--regardless of the value of object_id. This is exactly what it is asked to do.

In the latter case, the query is simply verifying that object_id is NULL, which is exactly what it's asked to do.

k4st··on Netflix now bigger than HBO
This is not so much constructive, but more a comment on my Netflix viewing habits and opinions on three shows which they've created:

I really enjoyed House of Cards. Lilyhammer was pleasantly surprising and I'm looking forward to future seasons. I recently tried watching Hemlock Grove and that was awful. I'm sceptical of Arrested Development: I loved the original, but it's been a long time and I feel like it's time to move on.

Otherwise, I find Netflix to be attractive in cycles. Every now and then, I will discover a bunch of new things (be it movies or TV shows) and binge watch them, and then I feel like there nothing left on Netflix. I keep paying on "down periods" because I like there is a sense of security because I have a high quality / stable streaming service available to me. Then, after a few weeks, I eventually return to Netflix for more binge viewing.

k4st··on Pin - A Dynamic Binary Instrumentation Tool
I will look into this a bit tomorrow. Can you supply an example command-line invocation?
k4st··on Pin - A Dynamic Binary Instrumentation Tool
I am working on a DBT framework that has some user space support. I do my main development in OS X and Linux, and so I have done some testing of it on OS X.

The main focus of the DBT tool is Linux kernel modules, but let me know the kinds of stuff you need it for and I can a) figure out if my tool is applicable, and b) perhaps share the code.

k4st··on Create your next conference poster with LaTeX
I have found that a combination of Scribus, GraphViz, and OmniGraffle are my favourite tools for making conference posters. Scribus has a few quirks, but once you learn them it's pretty easy to be very productive.
k4st··on The Minuum keyboard project: mobile keyboards reimagined
Off topic: This was filmed in the Bahen building at U of T! Go DGP!
k4st··on Dyson Unveils New 'Wet and Dry' AirBlade Faucet
Two slightly on/off-topic rants about public washrooms:

First, the one thing I don't like with the normal AirBlade is the tendency for the water to drip off your hands, onto it, and then to pool below it on the floor. Not much water, mind you, but enough to make both the floor and the plastic onto which the water first drips a bit nasty (in some places). This might just be a cleaning issue in said places, though.

Second, the one mistake I hate seeing washrooms make is to have a tiny faucet where, in order to get your hands properly wet, your hands are almost forced to run into / touch the back of the sink.

k4st··on Prototyping iPhone apps on paper with POP
Idea suggestion 1: Shape detection. Presumably this is already present given that it looks for the borders of the viewscreen. It would be really great if it could detect potential buttons in the app, and auto-select them to improve the speed of the workflow.

Idea Suggestion 2: Color coding. Use a highlighter to color in buttons in some color. Your app would automatically recognize things of that color as buttons, and potentially erase the color in the "finished" prototypes.

k4st··on Why I Hate Tech Recruiters
I imagine it is in the process of being disrupted, see: http://en.wikipedia.org/wiki/Coursera#Business_plan.
k4st··on Show HN: GoScale Cloud Scaling in Milliseconds
How is something like the JVM handled (when scaling down), which seems averse to letting go of its memory?
k4st··on How can you program if you're blind?
I am curious about what blind programmers consider to be aesthetically appealing code.
k4st··on State Machines
For those interested in symbolically manipulating [1] state machines (NFAs), pushdown automata (PDAs), and context-free grammars (CFGs), take a look at http://www.grailplus.org.

[1] http://www.ioreader.com/2011/03/15/pattern-matching-in-grail

k4st··on 9 reasons to start using C++11
One of the reasons I like C++ is that it lets you throw away type safety and still maintain it through abstraction. This sounds awful, so let me explain.

In one project, I implemented an EDSL for performing a destructuring bind on a string (CFG production, actually). The types of the components of the pattern determined what the pattern would actually match.

This was all done in a previous version of C++, so I didn't have variadic templates available. I also didn't want to heap allocate the internals of patterns.

What I did was to store an array of void pointers and a function pointer as private fields within a pattern class. When constructing the pattern, pointers to the things to which parts of the string to be bound were put into the array, thus throwing away their types. BUT, the function pointer pointed to a static method in of a class template, which only operated on the array of void pointers in a type-safe way, precisely because it was compiled with the knowledge of the types.

I use this type of subversion when appropriate, and it's often a very convenient solution to an otherwise tricky problem. Such a thing would either not be possible--or be incredibly inconvenient--in C. It's often very useful to treat different stuff uniformly, knowing that your abstractions can maintain type safety.

k4st··on Is Psychology About to Come Undone?
Note: I am not a psychologist. What do you mean by "some tests are copyrighted"? Are you talking about a statistical method being copyrighted, an implementation thereof, or something else entirely?
k4st··on JSBin a super sweet online HTML and JavaScript editor
How does this compare with http://plunker.no.de? It is also open source (on github) and seems to have been inspired by JSBin.
k4st··on Show HN: Ham, a fast PHP router/microframework I hacked up last night
If n is the number of routes, and they are sorted (e.g. implicitly through a prefix tree) and evenly distributed accordingly then then the claim might be plausible by doing log n prefix comparisons of increasingly smaller suffixes of the route to be resolved. I find this line of reasoning unusual and misleading though.

The lower bound is linear in the length of the route if all routes participate in your regular expression and if you have it pre-compiled to, for example, a DFA or an LL parser ahead of time.

k4st··on Brian Kernighan's new book: D is for Digital
Yup, I thought D (for the language) and Digital for DigitalMars (for the compiler).
k4st··on iframe, you are dead to me
And WYSIWYG editing.
k4st··on How Go improves expressiveness without sacrificing performance
I am not convinced that this has anything to do with Go improving expressiveness. If anything, this seems more like whichever Go compiler is being used is not doing common subexpression elimination, and that is forcing the developer to re-invent a 'map' that returns nothing but mutates the list in place, albeit in an unusual way.

What are these "improvements" in expressiveness being compared to? Certainly not C or C++, as the initial problem isn't an issue, and the proposed solution is possible.

k4st··on Broken Kindles and Amazon's support responses
My first DX fell off the bed and the screen broke. I called them up the next day and my current DX arrived shortly after that. The most surprising thing was the lack of any sort of return label for sending back my broken DX. Over the years, I have been served well by Amazon so I have come to expect (and am always relieved by) their good service (to me).
k4st··on Equations True Computer Science Geeks Should (at Least Pretend to) Know
I would prefer to see the Cook-Levin theorem in place of the pumping lemma.
← PreviousPage 2 of 4Next →