News for hackers. Stuff that matters.
Re:Show HN: Java Bullshifier by tkfx on Tuesday November 22, 2016 @03:18PM (#13017283)
Hi, Alex from OverOps here. We've created the "Bullshifier" internally to stress test edge cases with our own monitoring tool (http://www.overops.com).

Whenever an exception or a logged error / warning happens in production, it shows you the complete source code leading to it, and the full variable state across the entire call stack.

Using Java Bullshifier, we're able to generate random applications with call stacks that can go thousands of frames deep and other quirky behaviors. This helps us make sure the overhead is unnoticed, even in the most extreme cases.

Would be happy to answer any questions.

Re:Show HN: Java Bullshifier by CocaKoala on Tuesday November 22, 2016 @03:41PM (#13017461)
I don't know why, but the fact that this is an actual tool that's been designed to solve a real problem that you guys faced (as opposed to being a random project that somebody dreamed up to make fun of Java or to see if they could do it) makes me really happy.
Re:Show HN: Java Bullshifier by tkfx on Tuesday November 22, 2016 @06:39PM (#13018657)
Java is alive and kicking. It's the most popular programming language in the world. As such, it also attracts most of the fire. We hope to see more colorful projects like these go open source. Thanks for the comment! :)
Re:Show HN: Java Bullshifier by nogridbag on Tuesday November 22, 2016 @04:34PM (#13017878)
I've been wanting to build a generic version of this type of tool for quite some time.

When I'm waiting several minutes for our app server to startup, I often ponder what life would be like if we had chosen language X or another stack for our application.

I've primarily worked on JRE-based stacks for some time and once a project reaches a certain size developer happiness begins to decline due to large compilation times, app startup times, etc. Even incremental compiling or hot-reloading of classes seems unreliable at a certain app size (either due to memory or some other reason).

It would be neat if there were a tool to generate large and complex apps with various stacks to get a feeling what the developer experience would be like 1-2 years down the road once the app reaches a critical mass.

Re:Show HN: Java Bullshifier by mahyarm on Tuesday November 22, 2016 @05:29PM (#13018247)
That is a good idea for testing out new stacks for that shiny new rewrite. One thing I've realized is most projects are not designed for 100+ developers working on it at +400kloc of code.

We adopted https://buckbuild.com/ at work for our android builds, and it has sped it up a lot compared to our previous gradle build process.

Re:Show HN: Java Bullshifier by Akonkagva on Wednesday November 23, 2016 @03:36AM (#13021096)
Why not OSGi?
Re:Show HN: Java Bullshifier by RhodesianHunter on Wednesday November 23, 2016 @01:51AM (#13020643)
Why not micro-services?
Re:Show HN: Java Bullshifier by twic on Tuesday November 22, 2016 @06:30PM (#13018610)
How were you able to go back in time to create Spring?
Re:Show HN: Java Bullshifier by mark242 on Tuesday November 22, 2016 @06:40PM (#13018664)
You misspelled "Hibernate". Hope this helps.
Re:Show HN: Java Bullshifier by retbull on Tuesday November 22, 2016 @08:38PM (#13019240)
Personally I go for the Jboss Spring Hibernate stack with a touch of Oracle thrown in running on Windows Servers.
Re:Show HN: Java Bullshifier by teh_klev on Wednesday November 23, 2016 @12:07AM (#13020214)
We have a self-hosted Jira/Confluence server running on Windows that's reached end of life....I can relate to this. Fortunately no Oracle in the mix other than Java.
Re:Show HN: Java Bullshifier by tkfx on Tuesday November 22, 2016 @06:47PM (#13018707)
joda-time + java.util.delorean
Re:Show HN: Java Bullshifier by twic on Monday December 05, 2016 @10:10AM (#13105762)
I did once work on a project that had a class FluxCapacitor. It was used in testing to set the time. It worked, but had about as many zany unexpected consequences as its fictional namesake.
Re:Show HN: Java Bullshifier by nindalf on Tuesday November 22, 2016 @10:19PM (#13019692)
You should be using the Java 8 time APIs if you want to do it right.
Re:Show HN: Java Bullshifier by ranko on Wednesday November 23, 2016 @05:25AM (#13021523)
Personally, I find Java 11 makes this much easier.
Re:Show HN: Java Bullshifier by zitterbewegung on Tuesday November 22, 2016 @04:01PM (#13017615)
How did you design this ? Do you have an interest in porting this to other languages ?
Re:Show HN: Java Bullshifier by tkfx on Tuesday November 22, 2016 @04:19PM (#13017760)
Hey, at the moment we're only interested in JVM languages, so Java was the best fit for this project. We'll be adding .NET support for OverOps in the future so that might be something we'll be looking at for Bullshifier as well.

There are a bit more details about the design on our blog: http://blog.takipi.com/java-bullshifier-generate-massive-ran...

And the full source code is available on Github: https://github.com/takipi/java-bullshifier

Basically, the tool is built with Groovy (many projects use it as a scripting language for Java), and there are 4 sections to each randomly generated class:

1. Variable definition, with random types, random names, and values.

2. A section that throws exceptions, or prints to the log, according to the config settings for the rate of events. This also includes a “suicide” function that stops the execution of the program.

3. Calls the next method.

4. Random code that never runs.

There are some advanced config settings described in the Github README.md