<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for kramerica</title><link>http://disqus.com/by/kramerica/</link><description></description><atom:link href="http://disqus.com/kramerica/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Thu, 20 Oct 2011 18:27:20 -0000</lastBuildDate><item><title>Re: Building for OS X - MongoDB - 10gen Confluence</title><link>http://www.mongodb.org/display/DOCS/Building+for+OS+X#comment-340258893</link><description>&lt;p&gt;Here is how I built on Mac OS 10.6.8&lt;/p&gt;&lt;p&gt;brew install boost pcre++ scons v8&lt;br&gt;cd Workspaces&lt;br&gt;git clone &lt;a href="git://github.com/mongodb/mongo.git" rel="nofollow noopener" target="_blank" title="git://github.com/mongodb/mongo.git"&gt;git://github.com/mongodb/mo...&lt;/a&gt;&lt;br&gt;cd mongo&lt;br&gt;scons . --usev8 --prefix=$HOME/Installs install&lt;br&gt;export PATH=$HOME/Installs/bin:$PATH&lt;br&gt;mongod&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">kramerica</dc:creator><pubDate>Thu, 20 Oct 2011 18:27:20 -0000</pubDate></item><item><title>Re: Brizzled: A Scala build tool</title><link>http://brizzled.clapper.org/blog/2009/02/12/a-scala-build-tool/#comment-13246210</link><description>&lt;p&gt;I've been thinking more about this topic over the past few days, and I wanted to toss out this thought and see what other folks thought. Ivy is a good example of a focused component that can be used in conjunction with other tools (would like to have a better interface other than XML). What if all the components in the build system were actually independent components. Not plugins, but actual independent components. If this approach was used for build systems, continuous integration systems, issue tracking systems, and wiki, I think we'd wind up with a collection of power single focused components that can be combined in many different ways to solve a far wider range of problems and people would be able to assemble solutions that are much more effective than lock in to a specific language and description model. In a proof-of-concept project I was working on during 2000-2002 (off and on), I was applying the same concept but with web apps, and that each application is independent but I could assemble a custom system per the organizations requirements: &lt;a href="http://qbal.mozdev.org/oldQbal.jpeg" rel="nofollow noopener" target="_blank" title="http://qbal.mozdev.org/oldQbal.jpeg"&gt;http://qbal.mozdev.org/oldQ...&lt;/a&gt; and &lt;a href="http://qbal.mozdev.org/" rel="nofollow noopener" target="_blank" title="http://qbal.mozdev.org/"&gt;http://qbal.mozdev.org/&lt;/a&gt; (I shut this effort down as other business activities got in the way). I'm going to restart it again, but this time, I'm going to start with these 2 areas. First will be a release definition tool that is generalized and its role is to provide a mechanism to define a release, its components, branches, automation properties, build properties, etc... from this automation is configuration, initialized and started-up. The next problem area I want to start on is the build system problem. What I'm looking to do is integration, and developer where needed a very loosely couple tool box of build components, i.e Ivy is a very good starting point, although I'd love for it to have an external DSL other than XML as the interface.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">kramerica</dc:creator><pubDate>Thu, 23 Jul 2009 23:35:50 -0000</pubDate></item><item><title>Re: Valley job-clingers: Why you need to get fired</title><link>http://venturebeat.com/2009/07/21/valley-job-clingers-why-you-need-to-get-fired/#comment-13107643</link><description>&lt;p&gt;the grass may not be greener on the other side, but the sky may be bluer&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">kramerica</dc:creator><pubDate>Wed, 22 Jul 2009 10:03:31 -0000</pubDate></item><item><title>Re: Brizzled: A Scala build tool</title><link>http://brizzled.clapper.org/blog/2009/02/12/a-scala-build-tool/#comment-12960957</link><description>&lt;p&gt;Great statements. But those are the symptoms that Martin talks about, not root cause. In fact many of the continuous integration things Martin writes about... are too late in the game for many commercial software companies. What Martin proposes in his writings is to create a symptom identification process via continuous integration, when in fact what you want to do is create a scenario where integration rarely fails. To do this, requires the right source code control tools, engineering discipline in the form of pre-integration practices, and a well designed build and test system. We were doing things like this back in the mid-80's on the HP-UX OS teams (specifically IND). At Sun in the early to mid-90's on some teams we ran a similar model. I've been lucky enough to work with distributed source code control tools in one form or another since the about 1987. They allow you to have workflows that are much simpler to use than the old-school cvs, subversion, and perforce. I've been creating java build systems since 1995, initially using make, then Ant, and more recently Maven. I thought nothing could get worse than Ant until I started working with Maven (i started drinking heavily). Scons I thought was going in the right direction, but really is no different than using groovy. I've read about a number of other approach, but they too fall into the same trap of too much coding in the build system. What is needed is a good external DSL with different thinking about the fundamental problems than in previous build systems&lt;/p&gt;&lt;p&gt;But build systems are generally a mess because of a lack of good examples available to learn from and people not dealing with the fact of a bad data model requires oddities to occur to operate on that data model&lt;/p&gt;&lt;p&gt;1) bad data model. generally speaking native source trees in commercial companies are poorly designed and rarely take into account the entire product life cycle. this leads to the problems Martin and others run into needing all kinds of 1-off solutions to produce a build. For example, suppose nothing changes in the source code, but the dependencies change, can the build system handle that without branching or modifying the build system&lt;/p&gt;&lt;p&gt;2) Ant and Maven are weakness is due to an very very narrow usage focus. Because of this focus and because they are the status quo, people are not learning much by using them, only that they do not do what is needed (and mostly what is needed is a reaction to a symptom). So in many ways because our build tools are weak so is our understanding of build systems.&lt;/p&gt;&lt;p&gt;3) Many java projects cannot fit in the maven model and the ant stuff is way to brutal in xml and also its really a poor design to begin with. I worked on one team that developing software to run on set top boxes (interestingly enough... javas initial target) and it was so painful using Ant to implement the build system. There is one good thing I can say about Maven and Ivy... the dependency management is good.&lt;/p&gt;&lt;p&gt;In regards to your latest statement about having to use actual code, I agree 100%. How that is done is the difference between what generally ends up being very sloppy build system or elegant (which should translate into easy to maintain and extend). I like to work with teams to completely separate targets, properties, and code which allows users and maintainers to focus on the specific logic of the build system versus, configuration of the build system, or supporting tasks (code snippers), instead of unraveling&lt;/p&gt;&lt;p&gt;In summary, when I define/implement build system, my main focus is removing the odd, local build weirdness. Mostly this oddness occurs for these reasons:&lt;/p&gt;&lt;p&gt;* the build system was difficult to understand and the developer needed to deliver their technology (primary focus) and in  a flash put in something to keep progress moving forward&lt;/p&gt;&lt;p&gt;* the build system is much like a wiki and that is it often not owned by anyone, no specs, no best-practices, its just a unmanaged container that somehow produces a result&lt;/p&gt;&lt;p&gt;* the person assigned to developing the build system operated in much the same way agile teams do, and that is with a narrow focus on the goals of the team in the immediate and near future, and then iteratively add support. but generally fundamental flaws are established with initial instance and we pile on more tasks for the build system in rapid fire.&lt;/p&gt;&lt;p&gt;* garbage in, process garbage, maybe something useful as output.&lt;/p&gt;&lt;p&gt;The best thing we could do, is as a community establish a  place on the web to describe the problems, symptoms, exceptions and approach to this problem. The solution would not be a build system, but instead of collection if libraries, utils (a toolbox), from that build systems would be implemented.&lt;/p&gt;&lt;p&gt;How simple can a native build system be... All targets are dynamic as follows and maintain in its own file lets call that &lt;a href="http://targets.mk" rel="nofollow noopener" target="_blank" title="targets.mk"&gt;targets.mk&lt;/a&gt;. Then we'll need another file to contain all the properties, &lt;a href="http://properties.mk" rel="nofollow noopener" target="_blank" title="properties.mk"&gt;properties.mk&lt;/a&gt;. The approach with that file is to define 3 categories of properties: little tuple, big tuple and common properties. The tuple type properties are used to group properties along platform, toolchain and other variants. The next file we'll next is responsible from resloving the properties into the variables used in the &lt;a href="http://tarket.mk" rel="nofollow noopener" target="_blank" title="tarket.mk"&gt;tarket.mk&lt;/a&gt; file. What we've done is separate the build system into 3 major pieces (targets, properties, resolver). This approach requires very few 'make' statements/commands. It support unlimited toolchains, chipsets, languages, etc... This is what I call a variant/relocatable based build system. Almost impossible to do in a simple manner with Ant and Maven.&lt;/p&gt;&lt;p&gt;$(OBJDIR)%.c: (SRCDIR)%.o&lt;br&gt;  $(DOT_C_DOT_O_RULE)&lt;/p&gt;&lt;p&gt;$(LIBRARY): $(OBJS)&lt;br&gt;  $(LIBRARY_RULE)&lt;/p&gt;&lt;p&gt;$(EXECUTABLE): $(OBJS)&lt;br&gt;  $(EXECUTABLE_RULE)&lt;/p&gt;&lt;p&gt;As soon as I see a target like libfoo.a I no that build system is rigid and will not respond to have the company does business, where they do it, etc.. without someone hacking on it.&lt;/p&gt;&lt;p&gt;So... A build system implementers, why don't we remove the odd and build weirdness? And why don't we work with build technology designers to have a better perspective of the problem?&lt;/p&gt;&lt;p&gt;Regards -- Kramer&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">kramerica</dc:creator><pubDate>Mon, 20 Jul 2009 12:27:27 -0000</pubDate></item><item><title>Re: Brizzled: A Scala build tool</title><link>http://brizzled.clapper.org/blog/2009/02/12/a-scala-build-tool/#comment-12957105</link><description>&lt;p&gt;dang nabit -- i was hoping to see some progress in build systems. in my opinion what the java community did was throw the baby out with the bath water when the ignored the essence of 'make'. what is really missing is a good approach to describe a build recipe. Unfortunately the java world is web centric when it comes to build system, so if you company is developing suites of products, unbundled products, products targeted at multiple channels: OEMs, VARs, ISV, IHV, Web, Direct these modern build tools are actually poor engineering projects. I just glanced at SBT and I'll need to muck with it. As soon as I see a build system that is not able to describe lists in a simple manner, I wonder what hoops the author will come up with to deal with variants. For example in 'make' I could do things like&lt;/p&gt;&lt;p&gt;LIST   = foo&lt;br&gt;LIST += bar&lt;/p&gt;&lt;p&gt;when I start to see folks implementing build systems like scons, and rake that use the native language syntax to express the recipe, I become concerned that they are really scripting the recipe and not defining the recipe&lt;/p&gt;&lt;p&gt;One of my favorite things about 'make' is the multiple pass thru the recipe to support interpolated macros, and exactly the opposite of ant/maven and that is mutable properties.&lt;/p&gt;&lt;p&gt;Every build system I've worked on where the developers started going outside the declarative and into procedural coding, the build system turned into a rats nest that nobody else on the team wanted to have anything to deal with.&lt;/p&gt;&lt;p&gt;having said all that, I'd love to see a build system implemented in scala, but designed/implemented with right reasons behind them. Often all I see from the author is a description of symptoms they are solving. What is needed is a paradigm change, not just more rehashing of the same old junk&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">kramerica</dc:creator><pubDate>Mon, 20 Jul 2009 11:11:28 -0000</pubDate></item></channel></rss>