Three ways to Parallelize a Raytracer 8 July 2008Posted by Matthew Fulmer in Uncategorized.
I’ve done a bit of reading on how to parallelize raytracing, especially given the memory constraints of the cell. There are three approaches I’ve discovered so far:
- Distribute the rays: Each node runs a full raytracer on the full scene, and processes a subset of the rays from start to finish
- Distribute the processing: One node handles ray creation, another ray intersection, another shading, another shadows. Every node needs access to different aspects of the entire scene.
- Distribute the scene: Each node handles every ray segment that intersects it’s slice of the scene.
E Concurrency model 21 March 2008Posted by Matthew Fulmer in Uncategorized.
The E Language has an interesting and very nice concurrency model. It is related to the Croquet/Tweak messaging model. This is an outline of it. I also made an animated demo of how promises work (more…)
DeltaStreams 0.1.1 in the works 29 November 2007Posted by Matthew Fulmer in Delta Streams.
I don’t update my blog nearly enough. I released DeltaStreams (with Goran’s approval), nearly a month ago (announcement). Since then, I’ve been working on a few improvements in my (currently copious) spare time. I’ve eliminated (I believe) the dependence on ToolBuilder and PlusTools, which should allow a Universe release and a 3.8 release. I also fixed a number of bugs, increasing the number of passing unit tests from 87 to 107 (out of 131). The release process for 0.1 was done manually, and it was a pain, and will only get worse as the number of supported Squeak versions and the number of release avenues increases. So, the last step of 0.1.1 will be an automated build and release script, which will (hopefully) let me build the .sar release files and upload them to squeakmap and universes with a single command.
A New Squeak Development Example For Squeak 3.9 4 July 2007Posted by Matthew Fulmer in Squeak, Squeak Doc.
add a comment
Stephan Wessels just finished an excellent tutorial for Squeak Smalltalk. Covers everything from installing squeak to building a fun game with Morphic. It focuses on test driven development throughout the entire process. It also shows how to use Monticello to manage code.
A great accomplishment. Thank you, Steve
Smalltalk debugger realization 8 June 2007Posted by Matthew Fulmer in Uncategorized.
add a comment
As I was working on adding email notification to SqueakSource commits, I had the debugger open to a method with two very interesting objects. I wanted to send a few test messages involving those objects to see what kind of information I could coax out of them. But I couldn’t think of a way to have them both open in a workspace or inspector at the same time! How could I test them out?
Then it hit me. You can edit the method here in the debugger, test them out however I want, then save the messages I want into this method, and erase the ones I don’t. It is more than what I wanted, and I had to press zero buttons. I like interfaces like that
Updating ThingLab 8 March 2007Posted by Matthew Fulmer in ThingLab.
add a comment
I have decided to update ThingLab so that it runs on Squeak 3.8. I am doing this partly to prepare for Peek, my Google Summer of Code proposal, and partly because ThingLab is one of the coolest projects I have ever seen and actually exists. So far, I have it partially running under MVC in Squeak 3.8. I will get it fully working under MVC before I even attempt to get it running under Morphic, probably via the Omni framework. A lot of it works already, but the nice features, like constraint merging and deletion, tend to bring up the emergency evaluator at odd times.
I am also running it under Squeak 2.3, which was the target of the partial update done by Reinier van Loon in 1998. It works a bit better under Squeak 2.3, but constraint deletion brings up the emergency evaluator even there.
I will port the code to Monticello soon. Check back at http://www.squeaksource.com/ThingLab
How not to port software, part 2 23 February 2007Posted by Matthew Fulmer in AME Education, software.
add a comment
In my previous post, I told about my experience trying to port a
windows-only C++ program first to the cross-platform glib toolkit, then
to the Squeak environment. I gave up because I thought it would take too
long, and because I was not willing to ask for help using Smallapack, a
Squeak/VisualWorks matrix library. Now I have finished the short project
assigned to me and can look at what happened in retrospect.
How not to port software 7 February 2007Posted by Matthew Fulmer in Uncategorized.
Three weeks ago, I received an assignment from my research adviser to
add a new, simple motion model to our path tracing program. Quite a
simple assignment. However, I do not like the code base for several
- It only works under Visual Studio on Windows
- It is monolithic
- It is not modular
So I thought, why not get around to cleaning up this code? (more…)
Should I work on proprietary software? 17 January 2007Posted by Matthew Fulmer in intel, software.
1 comment so far
Yesterday was my first day on the internship at Intel. It was a lot of fun, and the cafeteria is amazing. But I found out what I had been dreading to hear: I am to develop proprietary software for Intel to use in-house.
I was considering dropping the internship for that reason, but I talked to my father about it first. We talked about the values of free software (for the first time), and I decided that the cost of developing the proprietary software in-house is not very high, as opposed to distributed proprietary software, and that I will only work on proprietary software if it is not distributed.
Here is how I weighed the cost:
Proprietary software costs everyone who uses it a certain amount of freedom. It costs everyone who does not use it the ability to use it, which is not too bad. The software I will be making is a Python program to string together and record the results of proprietary Intel testing and measuring equipment, and so has very little use outside of Intel. That is why I say that denying everyone outside of Intel the right to use it is not too bad: they will not want or use it anyway.
Now consider the cost to the user: the freedom to share it. First, all users are being paid by Intel, and second, nobody wants it anyway. Thus the users are compensated, and the non-users have a negligible interest in the software, so I think it is OK to work on this proprietary program. None of this would be true if the program was distributed; thus I will never work on distributed proprietary software.
New Mexico Christian Children’s Home 15 January 2007Posted by Matthew Fulmer in Church.
At church tonight, there was a presentation regarding the New Mexico Christian Children’s Home. My church has donated food, laundry detergent, and money to that place for as long as I have been there, but this was the first time I ever saw anything about it. I am very impressed; it is definitely a place worth investing in. They raise about 50 kids at a time, and train them all to be excellent people.
The families have times for Bible Study, times for homework, and times for play. The children are taught economics through assigned chores, and raising crops and animals. Each year, they attend the local fair, and they present and auction the animals, and sell the vegetables. It seemed to be very effective.
I think I believe that a farm is the only place to raise children, and I got a confirming glimpse of that during this presentation. When I become a parent, I will need to keep in mind three things:
- Always set a Godly example for the others. The best way to know how to be Godly is to see others do it.
- Teach the value of work, time, and money. Do not waste much of them, because they are quite valuable, especially work and time.
- Put the children in a community of parents and peers. The more friends anyone has, the better. I think the same could be said of parents. The more adults a child knows and trusts, the more wisdom and knowledge they can gain.
And I should definitely put this place in my will.