Added a page to my portfolio for "Dough", a real time soft material simulator.
http://jaredcounts.com/dough/
Just unburied a rigid-body physics engine that I made in 2012!
https://github.com/BlueThen/Gazelle-Java-Physics-Engine
It's probably uncompilable right now, but I might return to it and polish it up a bit. Meanwhile, I'll be adding a page to my portfolio on Gazelle!
Finally published my newest portfolio: http://jaredcounts.com/
No more Java applets!
I've been spending my spare time for the past couple of months redoing my portfolio.
I'm not very experienced with design, but this is turning into something that I'm feeling pretty good about.
Any feedback/opinions appreciated!
Edit: You can view the website live at http://bluethen.com/portfolio4/
Question to web developers out there. How do you maintain DRY HTML? DRY, as in, "Don't Repeat Yourself".
For example, if you have a navigation bar to be shared across every page, what do you do to avoid having to copy-paste this code 10-20 times?
Among the solutions, I found JQuery/JS, PHP, Server-sided includes, iframes, object element, and Python.
Is client-sided, so it relies on the client having JS enabled.
PHP has a handy include function which lets us compartmentalize web components.
This is apparently the HTML equivalent to PHP's include. It requires setting certain flags in Apache, and marking HTML files for parsing in HTML. I think this might be slower than PHP, because I read somewhere that it involves the server re-parsing and updating HTML files every single time they're being delivered.
This is useful for sandboxing HTML, but not so useful when you want JS and CSS to work cleanly across the entire page.
I couldn't find as much information about using object to embed HTML. This might have the same issue as iframe?
Really one could use any scripting language. Basically place special tags in your HTML file, like $$$header$$$
, and then perform a find-replace in Python with the appropriate HTML whenever you wish to deploy or run the HTML file.
I had a dream about HTML last night, so this is really bothering me. What do you all think?
@Hawkee
I'm not sure what your views are on this, but do you think Hawkee.com could display full names rather than aliases (perhaps, as an option)?
I can see Hawkee.com becoming another website people refer to on their resumes, portfolios, etc.
It's always a little awkward explaining to people (esp. potential employers) that BlueThen was an alias I chose during my gamer days when I was 9 or 10.
Another thought along this line is unique URLs for users. For example, Hawkee.com/JohnCarmack vs Hawkee.com/profile/941249
Jeff Atwood starts an open-sourced forum software: Discourse https://github.com/discourse/discourse
For context: http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html
More destruction of the solar system:
http://imgur.com/iiozsnA
http://imgur.com/mxFJ5sy
In my opinion, these are all turning out very beautifully.
@Hawkee I just noticed that most of my Processing applet demos aren't working. (eg. http://www.hawkee.com/apps/17128918/)
There's no easy answer for that. Many simulators check for collisions several times in between drawn frames.
I'm not sure if your code does this, but having a fixed timestep really helps with stability for almost no matter what you do. Glenn Fiedler wrote an article about it: http://gafferongames.com/game-physics/fix-your-timestep/
Basically take your elapsed time, break it up into fixed chunks, and send the left over time to the next frame. For example:
35ms elapsed, do two 16ms updates, add 3ms (35 - 16*2) to the next frame.
There's also Continuous Collision Detection, which I know very little about.
Conscious: Each cell in the grid would be the width and height of the largest ball's diameter. Then, you check the ball against the balls contained in each cell adjacent to the one it's in.
My ~2 year old Balls applet has an array for each ball that keeps track of which balls they've collided with. It can probably be more efficient to iterate over the balls, and check against balls you haven't already iterated against.
For example:
for (int i = 0; i < ballCount; i++) {
for (int c = i+1; c < ballCount; c++) {
// check ball i against ball c
}
}
Although, that's probably not as easy using a partitioning algorithm. Perhaps if you only checked against Balls with higher ID's/indexes in the main array?
I love this kind of thing! I made a Java/Processing version back in January, 2011: http://bluethen.com/wordpress/index.php/processing-apps/balls/
For a large number of evenly sized balls, I found that having a fixed sized grid for partitioning is a lot more efficient than quadtrees.
You also might want to check if they've already collided or not. Running the collision code twice for each collision may be what's causing some of the sticking.
Also, you should put a demo up somewhere!
@Hawkee I guess this is only inevitable. You should add a "report" button.
Alright, I made larger icons and removed the descriptions.
I'd like to make the banner javascript, but I'm having issues getting Processing to export working code.
http://bluethen.com/portfolio/
I'm thinking about hiding the applets on the pages, and instead showing the gallery first (with maybe an expandable box containing the applet?)
More ideas/feedback/critiques appreciated.