<?xml version="1.0"?><rss version="2.0"><channel><title>Programming</title><link>http://uncensored.citadel.org/</link><image><title>Programming</title><url>http://uncensored.citadel.org/image?name=_roompic_?go=Programming</url><link>http://uncensored.citadel.org/</link></image>
<description>Programming</description>
<item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3437944</link><pubDate>Sat, 18 May 2013 08:16:24 +0500</pubDate><title>Message #3437944</title><guid isPermaLink="false">3437944@Uncensored</guid><description><![CDATA[<html><body>

<p>http://winbinder.org</p>
<p>WTF?</p>
<p> </p>
<p>http://abf-snoop.herokuapp.com/recommend?body=winbinder.org</p>
<p><img src="http://abf-snoop.herokuapp.com/recommend?body=winbinder.org" alt="" /></p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3434939</link><pubDate>Sun, 12 May 2013 15:03:03 +0500</pubDate><title>Message #3434939</title><guid isPermaLink="false">3434939@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3434913</link><pubDate>Sun, 12 May 2013 08:34:46 +0500</pubDate><title>Message #3434913</title><guid isPermaLink="false">3434913@Uncensored</guid><description><![CDATA[  
 The page layout is somewhat trippy, to be honest.  I rather like it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3432870</link><pubDate>Tue, 07 May 2013 07:10:55 +0500</pubDate><title>Message #3432870</title><guid isPermaLink="false">3432870@Uncensored</guid><description><![CDATA[<html><body>

<p>Reclaim the content you lost property rights on in those walled gardens:</p>
<p>http://reclaim.fm/</p>
<p>interesting page layout ;-)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3425431</link><pubDate>Fri, 12 Apr 2013 12:34:39 +0500</pubDate><title>Message #3425431</title><guid isPermaLink="false">3425431@Uncensored</guid><description><![CDATA[  
 Graeme Rocher is still Hitler though. All the levels of abstraction in Grails
are just insane. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3425210</link><pubDate>Fri, 12 Apr 2013 10:47:04 +0500</pubDate><title>Message #3425210</title><guid isPermaLink="false">3425210@Uncensored</guid><description><![CDATA[  
 "Let's disabled logging in this area of code and see if LS notices..." 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3420665</link><pubDate>Thu, 04 Apr 2013 18:13:45 +0500</pubDate><title>Message #3420665</title><guid isPermaLink="false">3420665@Uncensored</guid><description><![CDATA[  
 Update: the real McHitler turned out to be the guy on my team who selectively
disabled error notifications in exactly the location that was causing me the
most trouble. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3420389</link><pubDate>Thu, 04 Apr 2013 12:43:38 +0500</pubDate><title>Message #3420389</title><guid isPermaLink="false">3420389@Uncensored</guid><description><![CDATA[I'm Mike Godwin and I approve of this message. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3419666</link><pubDate>Wed, 03 Apr 2013 15:45:32 +0500</pubDate><title>Message #3419666</title><guid isPermaLink="false">3419666@Uncensored</guid><description><![CDATA[  
 Attention: Graeme Rocher is HITLER!! 
  
 That is all. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3403085</link><pubDate>Tue, 26 Feb 2013 16:40:48 +0500</pubDate><title>Message #3403085</title><guid isPermaLink="false">3403085@Uncensored</guid><description><![CDATA[<html><body>

<p>http://www.youtube.com/watch?v=7E0ot9iJm_k</p>
<p>Wrong room, but I could not resist the stairs comment.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3402687</link><pubDate>Mon, 25 Feb 2013 02:31:57 +0500</pubDate><title>Message #3402687</title><guid isPermaLink="false">3402687@Uncensored</guid><description><![CDATA[ > That depends.  Do you have stairs in your house?   
  
 I am protected. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3401377</link><pubDate>Wed, 20 Feb 2013 14:20:23 +0500</pubDate><title>Message #3401377</title><guid isPermaLink="false">3401377@Uncensored</guid><description><![CDATA[ > That depends.  Do you have stairs in your house?   
  
 Clearly a case of insufficient stairs. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3401376</link><pubDate>Wed, 20 Feb 2013 14:19:48 +0500</pubDate><title>Message #3401376</title><guid isPermaLink="false">3401376@Uncensored</guid><description><![CDATA[ >a non-list type.  In that sense, both map and the visitor pattern will 
   
 >traverse an arbitrary structure, applying some function/method along   
 
 >the way.     
    
 Actually it's more than just a map: the visitor pattern involves the visitor
in the recursion. If the visitor doesn't call child.visit(this) then child
does not get visited. So the visitor controls the order and what items are
of interest.   
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3401194</link><pubDate>Tue, 19 Feb 2013 23:39:37 +0500</pubDate><title>Message #3401194</title><guid isPermaLink="false">3401194@Uncensored</guid><description><![CDATA[ > Does this sound reasonable to anyone else, or am I just sufferring   
 >from empanada withdrawal?   
  
 That depends.  Do you have stairs in your house? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3393246</link><pubDate>Fri, 01 Feb 2013 20:53:59 +0500</pubDate><title>Message #3393246</title><guid isPermaLink="false">3393246@Uncensored</guid><description><![CDATA[  
 The visitor pattern is most commonly applied (within compilers, interpreters,
translators, and other language toolchains) to an abstract syntax tree or
perhaps some other lower-level representation such as a flow graph. 
  
 The motivation for the design pattern is that you have an object structure
for some recursive data structure. And you want to be able to recurse over
it, with the structure itself helping you out with the detils of the recursion.
But you don't want to place all your application code within the data structure;
the data structure itself should be "thin" and only define the structure plus
negligible helper methods. 
  
 Also, the visitor pattern enables type-safe dispatch. 
  
 Hope that helps. If you want to talk to more, I may miss further comments
in this room, so CC to mail maybe. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3393215</link><pubDate>Fri, 01 Feb 2013 15:30:11 +0500</pubDate><title>Message #3393215</title><guid isPermaLink="false">3393215@Uncensored</guid><description><![CDATA[ I've been doing some light reading on programming techniques and patterns
recently, and came across something that made me go, "I wonder..." 
  
 The visitor pattern: http://en.wikipedia.org/wiki/Visitor_pattern 
  
 From the description given, it seems to me that the visitor pattern is, in
functional programming terminology, equivalent to doing a map on a container
type.  Though map in most functional languages seems more geared towards list
objects, there's no reason it can't be defined for a non-list type.  In that
sense, both map and the visitor pattern will traverse an arbitrary structure,
applying some function/method along the way. 
  
 Does this sound reasonable to anyone else, or am I just sufferring from empanada
withdrawal? 
   Pattern Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3393166</link><pubDate>Fri, 01 Feb 2013 12:49:33 +0500</pubDate><title>Message #3393166</title><guid isPermaLink="false">3393166@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3393131</link><pubDate>Fri, 01 Feb 2013 09:58:42 +0500</pubDate><title>Message #3393131</title><guid isPermaLink="false">3393131@Uncensored</guid><description><![CDATA[<html><body>

<p>using the c-pre processor to generate html:</p>
<p>http://www.cs.tut.fi/~jkorpela/html/cpre.html</p>
<p>.oO(???)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3384329</link><pubDate>Wed, 16 Jan 2013 11:25:29 +0500</pubDate><title>Message #3384329</title><guid isPermaLink="false">3384329@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3383402</link><pubDate>Mon, 14 Jan 2013 23:29:04 +0500</pubDate><title>Message #3383402</title><guid isPermaLink="false">3383402@Uncensored</guid><description><![CDATA[The easier way would be to simply omit the '.sh' from the filename in the
first place.  Make it executable, put it in your search path, and include
'#!/bin/bash' 
 on the first line for good measure. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378377</link><pubDate>Sun, 06 Jan 2013 09:46:16 +0500</pubDate><title>Message #3378377</title><guid isPermaLink="false">3378377@Uncensored</guid><description><![CDATA[ > maybe you created a bash alias that you forgot about? 
 > 

BINGO!  Thank you.  

This system is a new install which I did around Christmas, I have a text file list of changes and 
adjustments I want to make on new installs, that alias is not in that list.  I must have cut and 
pasted it from one of the other distros in my multi-boot system.

I knew did something to call the file (Two years ago) but couldn't remember what it was.  Something so 
simple it was silly.  It is all coming back.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378348</link><pubDate>Sun, 06 Jan 2013 00:23:42 +0500</pubDate><title>Message #3378348</title><guid isPermaLink="false">3378348@Uncensored</guid><description><![CDATA[<html><body>

<p>Where in the path statment, before or after the home bin location?</p>
<p>echo $PATH</p>
<p>Location matters.  First found is first run.</p>
<p>Remember, if you want to run a command under Unix (without descrepancy), you might want to say run from the current location i.e.:</p>
<p>./script</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378250</link><pubDate>Sat, 05 Jan 2013 21:29:14 +0500</pubDate><title>Message #3378250</title><guid isPermaLink="false">3378250@Uncensored</guid><description><![CDATA[  
 the important question is not "why doesn't helen execute" but "why does sendpic
execute". 
  
 helen should not execute 
 sendpic should not execute. 
  
 maybe you created a bash alias that you forgot about? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378243</link><pubDate>Sat, 05 Jan 2013 19:26:47 +0500</pubDate><title>Message #3378243</title><guid isPermaLink="false">3378243@Uncensored</guid><description><![CDATA[Both files are in the same directory, my bin directory, which is in my path statement.  

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378240</link><pubDate>Sat, 05 Jan 2013 18:45:24 +0500</pubDate><title>Message #3378240</title><guid isPermaLink="false">3378240@Uncensored</guid><description><![CDATA[<html><body>

<p>
	&nbsp;</p>
<blockquote>
	<div class="message_header">
		<span>Sat Jan 05 2013 23:13:38 CET</span> <span>from zooer @ Uncensored </span></div>
	<div class="message_content">
		<tt>So why does one &quot;blabla&quot; work without the &quot;.sh&quot; but &quot;yackity&quot; does not work without the &quot;.sh&quot;?</tt></div>
</blockquote>
<div class="message_content">
	<tt>you probably have a false positive. yackity also lives in /usr/bin or /usr/local/bin or anywhere in $PATH is my suggestion. what does &quot;which blabla&quot; say?</tt></div>
<p>
	&nbsp;</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378156</link><pubDate>Sat, 05 Jan 2013 17:13:38 +0500</pubDate><title>Message #3378156</title><guid isPermaLink="false">3378156@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378149</link><pubDate>Sat, 05 Jan 2013 15:56:24 +0500</pubDate><title>Message #3378149</title><guid isPermaLink="false">3378149@Uncensored</guid><description><![CDATA[<html><body>

<p>remember, you're in unix here. filenames are what they are.</p>
<p>if you insist to call it blabla.sh, you have to call it as blabla.sh</p>
<p>if you want to call it blabbla, either name it that way or symlink it.</p>
<p>everything in your PATH environment variable is used to search for filenames.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3378142</link><pubDate>Sat, 05 Jan 2013 13:51:05 +0500</pubDate><title>Message #3378142</title><guid isPermaLink="false">3378142@Uncensored</guid><description><![CDATA[Having a problem I can't figure out.  That thing called Google was of no 
help.  I created a script but I can't get it to execute without typing 
".sh" after the file name.

The files are in the bin directory in my home directory.
The permissions for that director allows executable programs.
I have another script in that directory that runs using the 
filename without the ".sh" at the end.
"#!/bin/bash" is at the begining of both files.
"#!/bin/sh" caused some error in the "sendpic" script and didn't 
solve the problem of allowing helen to execute without the ".sh"
Here is the directory and screen output.

 > -rwxr-xr-x   1 zooer zooer   97 Jan  5 09:05 helen.sh
 > -rwxr-xr-x   1 zooer zooer 6.7K Jan  5 09:09 sendpic.sh
 > drwxr-xr-x   2 zooer zooer 4.0K Jan  5 09:12 .
 > zooer@zooer-Linux12:~/bin$ helen
 > helen: command not found
 > zooer@zooer-Linux12:~/bin$ helen.sh  (executes as it should)

> zooer@Wzooer-Linux12:~/bin$ 
 > zooer@zooer-Linux12:~/bin$ sendpic (executes as it should)
 > /home/zooer/Pictures/webcam/front-cam.jpg:      67.86 kB   6.67 kB/s

I am not sure what I have to do to get helen to execute without the .sh 
at the end.  I am sure it is something simple.   Can you help? I will 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3374555</link><pubDate>Wed, 26 Dec 2012 11:26:25 +0500</pubDate><title>Message #3374555</title><guid isPermaLink="false">3374555@Uncensored</guid><description><![CDATA[<html><body>

<p>I doubt there would be any legal problems... the code I used is based strongly off something written in an article in Dr. Dobbs.  I've only very lightly tweaked it to make it easier to use.</p>
<p>Even so, the code was written for use with the captioning company, not WinINSTALL (never did work with Installshield).  And even when I worked on WinINSTALL, we left VERITAS before they merged with Symantec, so I never wrote code that made it into Symantec's corporation.  I just wound up with some Symatec stock due to the stock I had in VERITAS.</p>
<p>Okay, well, I suppose I should write a first pass at a class for posix-based systems, and perhaps find out what doesn't work if people complain about stuff.  I should also read about how Boost figures out various environments, so I can make it so you include one header regardless of what operating system you're using.</p>
<p>Aaand, I guess, I should see if I have a linux VM somewhere as well, for testing.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3374177</link><pubDate>Tue, 25 Dec 2012 16:54:18 +0500</pubDate><title>Message #3374177</title><guid isPermaLink="false">3374177@Uncensored</guid><description><![CDATA[The POSIX service startup/shutdown stuff is significantly less complex than
it is on Windows.  The downside is that it uses shell scripts, so there's
more futzing around during the installation process. 
  
 Even among unix-like systems there'd be some use for an abstraction layer,
to smooth over the difference between classic SysV init vs. Upstart vs. whatever
Apple uses.   
  
 It sounds like the logical place for this to go would be a system where you
provide a program that "does something" and then you let the system handle
the dirty work of starting it up and shutting it down. 
  
 Wasn't your former employer owned by InstallShield?  If so there could be
some legal hurdles... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3373092</link><pubDate>Fri, 21 Dec 2012 22:56:25 +0500</pubDate><title>Message #3373092</title><guid isPermaLink="false">3373092@Uncensored</guid><description><![CDATA[<html><body>

<p>Yeah... the approach I want to take involves slowly converting the code to work on both operating systems instead of being exclusive to Windows, then have some additional stuff built specific to Linux that addresses some of the OS-centric stuff that we want to 'simplify' for users (e.g. setting up networking, serial connections for certain applications, etc).  This effort alone could take a good while, especially when I still have to write code for new products and features, too.</p>
<p>It could take me a very long time to accomplish this, especially since I rely rather heavily on DirectShow for streaming audio/video.  I'll have to learn how to approach things the same way that VLC does for that stuff... and hope that the codecs in Linux are at least as good as the ones we use now.</p>
<p>I also have to navigate the whole licensing thing, since we don't want to release too much of our code to the public, out of concern for competition.  Personally, I don't think this ought to be as much of a concern (since this kind of technology doesn't really make a tremendous amount of money), but habits die hard sometimes.</p>
<p>In the end, I hope it's possible.  But if I wind up generating some interesting code that other folks could use in the process, then we're all the better for me trying.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3372933</link><pubDate>Fri, 21 Dec 2012 12:52:21 +0500</pubDate><title>Message #3372933</title><guid isPermaLink="false">3372933@Uncensored</guid><description><![CDATA[  
 Good luck... migrations can take significant time. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3372926</link><pubDate>Fri, 21 Dec 2012 11:44:25 +0500</pubDate><title>Message #3372926</title><guid isPermaLink="false">3372926@Uncensored</guid><description><![CDATA[<html><body>

<p>I have attached my ntservice.h file.</p>
<p>This is actually a refinement from what I normally use at my job, in that it's a single header... I usually have much of the functions in a separate .cpp file that I pull in as an include.</p>
<p>Hopefully, this gives you an idea of where I'm going, at least in C++.</p>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3372899</link><pubDate>Fri, 21 Dec 2012 09:01:51 +0500</pubDate><title>Message #3372899</title><guid isPermaLink="false">3372899@Uncensored</guid><description><![CDATA[<html><body>

<p>we do something like this:</p>
<p><br />#ifdef __WIN32__<br /><br />#ifdef WINNT_SERVICE<br /><br />int PASCAL<br />WinMain (HINSTANCE ThisInstance, HINSTANCE hPrevInstance, char *lpCmdLine,<br />     int nCmdShow)<br />{<br /><br />the_real_main();<br />    return (0);<br />}<br /><br />#else /* WIN32 Console Server */<br /><br />int PASCAL<br />WinMain (HINSTANCE ThisInstance, HINSTANCE hPrevInstance, char *lpCmdLine,<br />     int nCmdShow)<br />{<br />    return the_real_main(...);<br />}<br /><br />#endif<br /><br />#else /* UNIX */<br /><br />int<br />main (int argc, char* argv[])<br />{<br />    return the_real_main (argc, argv);<br />}<br /><br />#endif</p>
<p> </p>
<p>I guess that doesn't exactly all those hooks for windows services...</p>
<p> </p>
<p>heres a signal handler from citserver:</p>
<p>static RETSIGTYPE signal_cleanup(int signum) {<br />    syslog(LOG_DEBUG, "Caught signal %d; shutting down.", signum);<br />    exit_signal = signum;<br />    server_shutting_down = 1;<br />}</p>
<p> </p>
<p>maybe winelib already has something to offer for you that fulfills much of your needs?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3372887</link><pubDate>Fri, 21 Dec 2012 07:20:29 +0500</pubDate><title>Message #3372887</title><guid isPermaLink="false">3372887@Uncensored</guid><description><![CDATA[  
 So, I suppose, I'm looking for advice.  Some of you (IG in particular) have
a lot of experience writing daemons for posix.  I have a lot of experience
writing NT services.  I'd like to merge these two expertises into a single
code set that can work for both OSes. 
  
 Later, I'll post the code I currently have for creating an NT service.  This
code is a lightly modified version of code I found on Dr Dobbs.  The modifications
were intended to make it easier to create an NT service (derive a class and
call a macro). 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3372886</link><pubDate>Fri, 21 Dec 2012 07:17:01 +0500</pubDate><title>Message #3372886</title><guid isPermaLink="false">3372886@Uncensored</guid><description><![CDATA[    
 In Windows, our long-running services integrate with a Service Control Manager
(SCM).  The SCM provides a framework for controlling services, by letting
you stop, start, pause, and perhaps send specialized signals to the service
through its framework.  You have to make specialized calls to the operating
system to install or remove the service, and those calls can be made in such
a way as to have the service start automatically, or manually.   
  
  
 I know enough about posix to know that you can't call a function to install
the daemon, that such things are handled by scripts that invoke your service
and that other scripts control whether or not your daemon is started automatically
or manually, so I am not concerned about that exactly. 
  
 I'm more interested in what it takes to set up a daemon.  I assume that it
has to listen to signals (like KILL and HUP) and react appropriately
to those signals. 
  
 Basically, I want to take the core code I use now for creating a Windows
service, and add to it, to make it also create a posix daemon, so I don't
have to write specialized code for Windows vs. posix.  That is, I want to
derive a class in C++ from a 'process' class (perhaps), who then calls functions
like run(), on_stop(), on_pause() or the like depending on the signal received
(in posix) or the SCM signal received (in Windows). 
  
 I already have code that helps me set up a Windows NT service easily by deriving
a class and overriding its Run, OnStop, OnPause, etc. functions.  I think
I want something similar for posix, but is identical enough that a compiler
#define would cause either the NT Service or Posix code to get compiled as
appropriate. 
  
 I would be willing to make this code available to everyone, since I don't
think something like this is a core company
holding, but would be very useful to a lot of people. 
  
 And the majority of this code would exist as a series of headers.  I don't
like writing dynamic or static libraries, preferring header libraries for
something like this.  That would help to keep everything light, although you'll
need to use certain macros to help create the 'main' function, etc. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3372885</link><pubDate>Fri, 21 Dec 2012 07:03:42 +0500</pubDate><title>Message #3372885</title><guid isPermaLink="false">3372885@Uncensored</guid><description><![CDATA[  
 I'm in an increasingly peculiar position at work now, and I wonder if I could
get a little help in one specific area. 
  
 My boss insisted that we create software that runs in the Windows environment.
 He came to this decision long ago because he's familiar with the operating
system, and could therefore do maintenance on any machines running with that
operating system.  He also has a bias against free software, because he has
been burned several times by people who didn't really understand the full
costs of working with such software, and failed to anticipate certain concerns
well. 
  
 Today, he has had a change of heart.  I suspect his exposure to the Android
OS, layered on top of Linux as it is, caused him to rethink his position.
 He has asked me a few times how difficult it would be to migrate everything
over to Linux, etc. 
  
 I'd love to do this, because: 
  
 1. I've always
wanted to program for posix operating systems. 
 2. I want to expand my skillset out of Windows. 
 3. Linux seems like it will be more stable than the many-and-varied ways
in which Microsoft fucks with the Windows OS to make it harder to do relatively
simple things (like editing a text file and saving it without any problems...
yes, Windows has become so bad that you can't always do this without having
to go through your asshole). 
 4. We might be able to save money using Linux instead of paying for Windows
licenses. 
 5. Less of a hassle during installation.  Maybe. 
  
 So why am I posting this in Programming instead of Linux?  Because I need
to start this migration with simple things before I get to the larger things,
and the simple thing I want to focus on right now is the Windows service integration
vs. posix daemons. 
  
 (continued in the next post) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3336483</link><pubDate>Fri, 05 Oct 2012 15:42:45 +0500</pubDate><title>Message #3336483</title><guid isPermaLink="false">3336483@Uncensored</guid><description><![CDATA[  
 If the links between components are not clearly defined, make that the first
priority.  Make them documented, consistent, and network transparent.  Quite
a lot of this will need to be done from within the existing code base. 
  
 Then, the components can be replaced one by one, in the language of your
choice, using whatever disciplines you choose. 
  
 As always, avoid choosing any technology that locks you in to a specific
vendor.  (Except your hosting provider.  Feel free to depend on them.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3334726</link><pubDate>Tue, 02 Oct 2012 20:14:36 +0500</pubDate><title>Message #3334726</title><guid isPermaLink="false">3334726@Uncensored</guid><description><![CDATA[  
 *shudder* 
  
 Access... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3334267</link><pubDate>Tue, 02 Oct 2012 10:27:42 +0500</pubDate><title>Message #3334267</title><guid isPermaLink="false">3334267@Uncensored</guid><description><![CDATA[I've definitely got at least one person who I would consider dead wood.  
      
        
        
 I need someone who really understands architecture, not just banging out
code.         
      
    
    
 So far, I'm not real comfortable with the teams ability.  Some of the design
choices show inexperience at the best, ineptitude at the worst.   
    
 There is one guy who seems to have a good head for database administration,
but he's been coding as well.....     
  
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3334237</link><pubDate>Tue, 02 Oct 2012 08:28:29 +0500</pubDate><title>Message #3334237</title><guid isPermaLink="false">3334237@Uncensored</guid><description><![CDATA[  
 I've been working in Windows my entire professional career, and my current
company uses it extensively, for web page development, using a database backend.
 Increasingly, we're moving our stuff to a cloud archetecture via Amazon.

  
 I'd echo what Spell said, don't get rid of all the developers, as likely
you have quite a treasure trove of good developers who have been stifled.
 The guys you want to remove are the stagnant ones... the guys who are holding
everything back because they're comfortable, don't want to learn new technologies,
and think everything is fine just as they are. 
  
 Also, try to break your manpower down into groups of five people each, to
work on the projects you need done.  Any more than that, and you'll have crazy
communication problems.  Any less than that, and the team will feel overworked.
 (You can have one more or one less, but the sweet spot seems tob e
five).  There's a good chance that one project hasn't been finished in 9 years
because of massive communication problems. 
  
 SQL Server can provide a decent database engine if you want to spend the
money to continue using it.  Alternatively, PostgreSQL (sic?) is a nice alternative
that runs on both Windows and Microsoft, and might be a good choice if you
wish to gradually switch your team away from Microsoft and over to Linux.

  
 If you're going to do that, you probably also want to gradually start coding
pages in a language available to both Windows and Linux, whatever that is.
 Maybe make new developement work with the new language, and slowly migrate
the old pages to the new language.  I am not speaking from experience here,
though, so your mileage may vary. 
  
 Do not, though, be afraid to fire a stagnant worker who 'knows everything'
about a part of your technology.  *Someone*
will rise to fill the void, and will learn what needs to be learned to get
you through the problems that decision will initially create. 
  
 I write that for a few reasons.  Firstly, it shows the team that nobody is
indispensible.  That will prevent anyone else from becoming complacent.  Also,
it forces people to grow... someone has to fill the void, and someone will
(even if you force someone to do it).  Also, the person you fired may have
been sitting on some collosal problems that just wouldn't get fixed, or may
have been so uninspired as to prevent things from working more efficiently,
so putting someone else in that position will breath fresh air into it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3333986</link><pubDate>Mon, 01 Oct 2012 15:37:32 +0500</pubDate><title>Message #3333986</title><guid isPermaLink="false">3333986@Uncensored</guid><description><![CDATA[<html><body>

<p>having been in similar situations...</p>
<p>flipping technology with an existing team is probably not a that good idea. At least not without adding new persons to the game, which is also a thing which has to be done carefully. Paid education programs are also a way to produce motivation and show you care for them.</p>
<p>In general, i'd rather have a look at the way they work. Maybe some stuff is wrong there.</p>
<p> - do they have automated tests? A lot of fear changing stuff comes from not being able to tell whether its going to be working still after the change.</p>
<p> - do you have staging systems where you can test changes?</p>
<p> - do you have SCM? if its MS Visual Sourcesafe or Clearcase, count this as "NO" Migrate to one of Mercurial or GIT</p>
<p> - do they do right commit comments? if no, educate them about the importance.</p>
<p> - do they use contineus integration tactics? Stuff like jenkins is nice.</p>
<p> - do they do many repetive tasks by hand? make them get automated. this steals time and gives frustration.</p>
<p> - do the developers also run the production + fix stuff in production which goes wrong? Do they directly communicate with customers? this makes workloads uncalculateable, separate this.</p>
<p> - if you have meetings, do they end in endless discussions? Is it allways the same persons causing this? get them separated. fronts build up over years, you won't fix this.</p>
<p>While 'agile' is just a buzword, its got several tactics which are nice.</p>
<p>if you have frustration at hand, one way to solve that is to visualize progress in stuff like scrum meetings.</p>
<p>"perfection is the enemy of the good"- are they searching for perfection? find out a way to make them produce good solutions, perfect ones will never happen.</p>
<p> </p>
<p>And... watching carefully for a little while before taking actions could also be a good thing ;-)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3333963</link><pubDate>Mon, 01 Oct 2012 14:19:44 +0500</pubDate><title>Message #3333963</title><guid isPermaLink="false">3333963@Uncensored</guid><description><![CDATA[ On a more general note concerning whether to keep the existing programmers.
 Whether you choose to rewrite or not, you can provide your staff with the
resources they need to learn new technologies.  The programmers that take
the initiative to use those resources are the ones you definitely want to
keep.  However, don't be too quick to write off the ones that don't take the
initiative.  If they've been living in a culture of fear, they may not be
properly motivated to take what they feel might be a big risk. 
  
 In the end, it boils down to how much time and money can be spent on bringing
your programmers up to speed vs. getting new programmers. 
   Spell 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3333943</link><pubDate>Mon, 01 Oct 2012 13:27:03 +0500</pubDate><title>Message #3333943</title><guid isPermaLink="false">3333943@Uncensored</guid><description><![CDATA[Thanks for the insight....     
      
 SQL 7 is going to be upgraded to SQL 2000 first.  After that, we need to
make programming changes.  This will allow us to run on a more current version
of Windows, as well as take advantage of greater amounts of RAM, which should
help performance.  We've also purchased a new server using a Fusion IO card,
to help reduce disk subsystem bottlenecks.     
      
 I'm not really inclined to move away from SQL Server, but I want to rethink
the front end....     
    
  
  
 Luckily the system is written in a number of modules, so we can start a re-think
on a case by case basis. 
  
 The most horrifying thing I've found is that the system that makes us the
most money still runs in Access.  They've been trying to port it for 9 years,
and still haven't accomplished the job. 
  
 I've got a lot of work ahead of me. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3333942</link><pubDate>Mon, 01 Oct 2012 13:18:31 +0500</pubDate><title>Message #3333942</title><guid isPermaLink="false">3333942@Uncensored</guid><description><![CDATA[  
 I'm not a Microsoft coder, but I'll offer a few words of devil's advocate:
that this system is coded on M$ technologies should NOT be seen as a problem
in and of itself. M$ catches a lot of flack from the Linux fanatics but you
know, that's what they're gonna say regardless... maybe your problem is that
you're on *Aging* M$ technologies. We undergo the same problems in the Java
world - ask me about our projects to migrate off of IBM WebSphere and on to
newer Java technologies sometime... such projects always have to compete for
development with real customer needs. 
  
 Are you using ASP.NET or the classic ASP? Classic ASP is no longer the state
of the art, and there's probably next to no modern library support... but
MS has committed to supporting it for 10 years after Windows 8, so the death
of your platform support is not imminent. 
  
 At a bare minimum, my inclination would be to
say that new modules of your applicaiton should be coded in newer technologies
if possible. Maybe that means newer Microsoft technologies to leverage your
existing skill base. If you're stuck with some kind of monolithic server structure
where everything needs to be hosted on a single Windows NT 4 box/cluster,
now is the time to extend the legacy code in such a way that newer modules
can be hosted on separate servers. Maybe you do need to rewrite everything.
But if you try do it all in one shot rather than incrementally, in a way you
can iterate on, there is a risk of project failure. 
  
 SQL Server 7 can probably be migrated to a newer SQL Server a lot less painfully
than the rest of your app can be migrated from ASP Classic to ASP.NET (or
rewritten in another language.) 
  
 All that being said, sometimes a product reaches the end of its lifecycle,
or just becomes a complex unmaintainable
mess, and your best bet is to do a total rewrite, starting only with the core
features. Not all customers will migrate to the new thing, but some will.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3333828</link><pubDate>Mon, 01 Oct 2012 11:20:56 +0500</pubDate><title>Message #3333828</title><guid isPermaLink="false">3333828@Uncensored</guid><description><![CDATA[So, I've made a career change, and I'm serving as CTO of a company that's
offering it's applications online (SaaS is today's newspeak....)       
      
      
 I have some large challenges ahead, and I could use some advise.     
    
    
 I'm headed up a team of programmers - and I'm suspect of their abilities.
 Everything here is written in ASP and VB, with a smattering of .NET.  The
backend SQL server is still running on MS SQL 7.0.    
    
 There's a lot of fear in this organization, which has lead to stagnation.
  
    
 Now, my first instinct is to hire new programmers, and re-write everything.
 However, there is 13+ years of code base, and I'm afraid of losing things
if we do that.   
    
 Also, I don't want to run roughshod over the guys who have been keeping the
system running all this time.  They know the skeletons, and in some ways have
not been allowed to do a better job than
they'd like.  We count on them right now to keep things going.   
    
 As programmers, what do you think?  Cut bait and start over?  Allow the team
who got us in to this mess to help get out?   
    
 What about changing architectures.  Move away from VB, etc. to Javascript
/ Java.....   
  
  
 From a hardware & network perspective, we're behind but those things can
easily be overcome. 
  
 Any advise would be helpful, since it's been over 15 years since I worked
in programming at all. 
  
 Also, if anyone knows any good programmers looking for work in the Westchester
County (New York) area, drop me a message. 
  
 Thanks in advance! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3330980</link><pubDate>Tue, 25 Sep 2012 17:13:27 +0500</pubDate><title>Message #3330980</title><guid isPermaLink="false">3330980@Uncensored</guid><description><![CDATA[ As far as I know, that's the way it's always been with "system requirements."
 I think that's one reason that a number of modern, graphically intensive
games include minimum and recommended system parameters.  That way, you know
what you'll get if you just do the minimum. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3330724</link><pubDate>Mon, 24 Sep 2012 15:50:51 +0500</pubDate><title>Message #3330724</title><guid isPermaLink="false">3330724@Uncensored</guid><description><![CDATA[ > Sep 24 2012 1:57pm from Spell Binder @uncnsrd   
 > A little googling says that Oracle's (Sun's) JVM requires 64 MB of   
  
 That's kind of like saying you can run Windows 7 on a 1GB netbook. You can
do it, but you'll have nothing left over for a typical moderate-sized application.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3330723</link><pubDate>Mon, 24 Sep 2012 15:49:09 +0500</pubDate><title>Message #3330723</title><guid isPermaLink="false">3330723@Uncensored</guid><description><![CDATA[ > Sep 24 2012 6:54am from michaelmd @uncnsrd   
 >has anyone found a jvm that is usable and not enormous? (as in you  
 >have to set aside *huge* amounts of ram for it)   
  
 taanstaafl. the jvm's GC design philosophy favors throughput over footprint...

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3330706</link><pubDate>Mon, 24 Sep 2012 13:57:56 +0500</pubDate><title>Message #3330706</title><guid isPermaLink="false">3330706@Uncensored</guid><description><![CDATA[ A little googling says that Oracle's (Sun's) JVM requires 64 MB of memory
on Linux systems, and 128 MB on Windows systems, except for XP, which is 64.

  
 The tomcat JVM uses "...20-60 MB of memory." 
  
 Here are the sources: 
  
 Tomcat: http://marc.info/?l=tomcat-user&m=104378438221546&w=2 
  
 Oracle/Sun: http://www.java.com/en/download/help/sysreq.xml 
  
 Enjoy! 
   JVM Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3330649</link><pubDate>Mon, 24 Sep 2012 09:38:36 +0500</pubDate><title>Message #3330649</title><guid isPermaLink="false">3330649@Uncensored</guid><description><![CDATA[<html><body>

<p>no. use a compiler and generate native code. Java interpreters are always clunky, regardless whether you name them see-carpet or whatever.</p>
<p>In doubt use a concept which generates intermediate c-code like vala.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3330448</link><pubDate>Mon, 24 Sep 2012 06:54:47 +0500</pubDate><title>Message #3330448</title><guid isPermaLink="false">3330448@Uncensored</guid><description><![CDATA[<html><body>

<p>has anyone found a jvm that is usable and not enormous? (as in you have to set aside <strong>huge</strong> amounts of ram for it)</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3319987</link><pubDate>Thu, 06 Sep 2012 12:05:22 +0500</pubDate><title>Message #3319987</title><guid isPermaLink="false">3319987@Uncensored</guid><description><![CDATA[I may have some exposure in the not too distant future to a project written
in Jython (Python code running in an interpreter that compiles it down to
Java bytecode, allowing the developer to make use of both Python and Java
class libraries).  Anyone familiar with it?  Whaddya think? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3318145</link><pubDate>Sat, 01 Sep 2012 10:59:18 +0500</pubDate><title>Message #3318145</title><guid isPermaLink="false">3318145@Uncensored</guid><description><![CDATA[<html><body>

<p>fancy. A project that switched from see-carpet to java and groovy:</p>
<p>http://www.ephys.de/computer/debian_sportstracker.htm</p>
<p>http://www.saring.de/sportstracker/index.html</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3295817</link><pubDate>Mon, 30 Jul 2012 13:18:02 +0500</pubDate><title>Message #3295817</title><guid isPermaLink="false">3295817@Uncensored</guid><description><![CDATA[<html><body>

<p>it wasn't about the bload, its been about the coding samples ;-P</p>
<p> </p>
<p>hm, just learned the term "brogrammer" http://www.urbandictionary.com/define.php?term=brogrammer</p>
<p>I have to terminate my social life and stop talking about anything else than hacking.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3295445</link><pubDate>Sun, 29 Jul 2012 21:50:01 +0500</pubDate><title>Message #3295445</title><guid isPermaLink="false">3295445@Uncensored</guid><description><![CDATA[Not really interested in more bloat. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3294748</link><pubDate>Sat, 28 Jul 2012 13:01:27 +0500</pubDate><title>Message #3294748</title><guid isPermaLink="false">3294748@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, from the online samples, IGs gonna like using this in webcit:</p>
<p> </p>
<p>https://github.com/emberjs/ember.js</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3293972</link><pubDate>Thu, 26 Jul 2012 17:20:42 +0500</pubDate><title>Message #3293972</title><guid isPermaLink="false">3293972@Uncensored</guid><description><![CDATA[<html><body>

<p>Ontario Mega Finance Group!</p>
<p>s.b. wasted <a href="http://xamarin.com/pr/financing">12 Mio. US-Dollar  </a>into xamarian. </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3293544</link><pubDate>Thu, 26 Jul 2012 06:30:21 +0500</pubDate><title>Message #3293544</title><guid isPermaLink="false">3293544@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Wed Jul 25 2012 11:14:05 EDT</span> <span>from IGnatius T Foobar @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Lovely. I'm sure Miguel de Idiot has a Vista Phone in his pocket and is heaping praise upon its innovative and wonderful experience. </div>
</div>
</blockquote>
<p>http://fossforce.com/2012/07/walled-garden-approach-work-microsoft/</p>
<p>I like his rant about them selling the Nokia Lumnia 900 (the top notch product) for 20$ which imho is next to we don't want to pay the costs for disposal of the unsold units.</p>
<p>Microsoft cutting the upgrade path to windows 8 was probably as good to windows 7 phones as the (to early) anouncement of the Apple Macintosh to the Apple Lisa.</p>
<p>btw, mdidiot is developing/trying to sell see-carpet for android and i-something, so you can easily port your app for the vista fon to them ;-)</p>
<p>I guess developing a toolkit to run objective c-code on android more easily sounds like a more clever business idea to me. Or... maybe transpile the java stuff to objective c.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3293420</link><pubDate>Wed, 25 Jul 2012 13:02:08 +0500</pubDate><title>Message #3293420</title><guid isPermaLink="false">3293420@Uncensored</guid><description><![CDATA[If you were writing a program for a card game would you use a 13x4 array (thirteen cards x four suits) or just 52 variables?  There is no 
difference between the suits as far as value.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3293393</link><pubDate>Wed, 25 Jul 2012 11:14:05 +0500</pubDate><title>Message #3293393</title><guid isPermaLink="false">3293393@Uncensored</guid><description><![CDATA[Lovely.  I'm sure Miguel de Idiot has a Vista Phone in his pocket and is heaping
praise upon its innovative and wonderful experience. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3292786</link><pubDate>Tue, 24 Jul 2012 13:44:44 +0500</pubDate><title>Message #3292786</title><guid isPermaLink="false">3292786@Uncensored</guid><description><![CDATA[<html><body>

<p>remember xamarian introducing the java to see-carpet transpiler that can convert the whole android userland?</p>
<p>now you can test whether they were doing it right.</p>
<p>http://codeporting.com/blog/csharp-to-java-conversion/archive/2012/07/19/blog-migrating-csharp-out-and-ref-keyword-to-java-using-codeporting-csharp2java.html</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3268603</link><pubDate>Mon, 18 Jun 2012 12:51:43 +0500</pubDate><title>Message #3268603</title><guid isPermaLink="false">3268603@Uncensored</guid><description><![CDATA[It's a trick I learned while developing in BASIC on my Commodore 64, which
didn't have a boolean type.  So you can blame Microsoft for that. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3268556</link><pubDate>Mon, 18 Jun 2012 09:14:38 +0500</pubDate><title>Message #3268556</title><guid isPermaLink="false">3268556@Uncensored</guid><description><![CDATA[ >>  Damn buncha pedants. Yes I'm talking about a variable within a  
 >>single function that has a variable that toggles back and forth  
 >>between 1 and 0.   
  
 You posted in the Pedantry> room, are you surprised? ;) But it *is* an "overly
clever" trick, of the sort that hurts readability for future maintainers/victims.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3268509</link><pubDate>Mon, 18 Jun 2012 03:48:18 +0500</pubDate><title>Message #3268509</title><guid isPermaLink="false">3268509@Uncensored</guid><description><![CDATA[<html><body>

<p>neither is java nor c-carpet.</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3268481</link><pubDate>Sun, 17 Jun 2012 23:42:53 +0500</pubDate><title>Message #3268481</title><guid isPermaLink="false">3268481@Uncensored</guid><description><![CDATA[Really!?  Then, by that logic, Python, Ruby, 
Lua, and Perl aren't scripting languages 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3267179</link><pubDate>Fri, 15 Jun 2012 10:23:09 +0500</pubDate><title>Message #3267179</title><guid isPermaLink="false">3267179@Uncensored</guid><description><![CDATA[Yes I know, given a choice I would have continued my unorthodox but awesome
usual practice of writing everything in C, but in this case I'm writing a
module that attaches to someone else's project. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3266336</link><pubDate>Thu, 14 Jun 2012 11:57:08 +0500</pubDate><title>Message #3266336</title><guid isPermaLink="false">3266336@Uncensored</guid><description><![CDATA[<html><body>

<p>PHP?  Well, all bets are off then.</p>
<blockquote>
<div class="message_header"><span>Tue Jun 12 2012 01:54:05 PM EDT</span> <span>from IGnatius T Foobar @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Damn buncha pedants. Yes I'm talking about a variable within a single function that has a variable that toggles back and forth between 1 and 0. <br /><br />And who said I'm working in C ? This is a PHP program. </div>
</div>
</blockquote>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3266020</link><pubDate>Wed, 13 Jun 2012 17:04:04 +0500</pubDate><title>Message #3266020</title><guid isPermaLink="false">3266020@Uncensored</guid><description><![CDATA[ >you're posting in the programming room, not the scripting room ;-P  
  
 PHP compiles into bytecode at runtime so it's not a scripting language. 
That's why comments don't slow the system down like they do in BASIC.  :)

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265841</link><pubDate>Tue, 12 Jun 2012 17:47:09 +0500</pubDate><title>Message #3265841</title><guid isPermaLink="false">3265841@Uncensored</guid><description><![CDATA[  
 Bwahaha... no sigils! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265837</link><pubDate>Tue, 12 Jun 2012 16:49:04 +0500</pubDate><title>Message #3265837</title><guid isPermaLink="false">3265837@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Tue Jun 12 2012 16:47:51 EDT</span> <span>from dothebart @ Uncensored </span></div>
<div class="message_content">
<p>you're posting in the programming room, not the scripting room ;-P</p>
<br /><br /></div>
</blockquote>
<p>and the last time I did php, it hat $ in them.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265836</link><pubDate>Tue, 12 Jun 2012 16:47:51 +0500</pubDate><title>Message #3265836</title><guid isPermaLink="false">3265836@Uncensored</guid><description><![CDATA[<html><body>

<p>you're posting in the programming room, not the scripting room ;-P</p></body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265737</link><pubDate>Tue, 12 Jun 2012 13:54:05 +0500</pubDate><title>Message #3265737</title><guid isPermaLink="false">3265737@Uncensored</guid><description><![CDATA[Damn buncha pedants.  Yes I'm talking about a variable within a single function
that has a variable that toggles back and forth between 1 and 0. 
  
 And who said I'm working in C ?  This is a PHP program. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265171</link><pubDate>Mon, 11 Jun 2012 16:55:15 +0500</pubDate><title>Message #3265171</title><guid isPermaLink="false">3265171@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mon Jun 11 2012 15:57:16 EDT</span> <span>from kc5tja @ Uncensored </span></div>
<div class="message_content"><tt>It fails with languages that represent true </tt><br /> <tt>as all bits set too.</tt><br /> <tt></tt><br /> <tt>CORBA's representation is true only over the </tt><br /> <tt>wire. When unmarshalled, the proxy or stub </tt><br /> <tt>should normalize the value. When </tt><br /> <tt>marshalling, true values should be sent as 1, </tt><br /> <tt>and only 1.</tt><br /> <tt></tt><br /> <tt>If your IDL compiler doesn't ensure this, </tt><br /> <tt>then it's technically broken, and should have </tt><br /> <tt>a bug report filed against it.</tt><br /> </div>
</blockquote>
<p>the idl compiler doesn't have to be in the game here; since c doesn't specify a type for boolean, while corba does.</p>
<p>so if you call your corba stub with a value &gt; 255 (and all 8 lower bits 0) the c-compilers "convert" the int to the byte and throw away wats not there.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265064</link><pubDate>Mon, 11 Jun 2012 15:57:16 +0500</pubDate><title>Message #3265064</title><guid isPermaLink="false">3265064@Uncensored</guid><description><![CDATA[It fails with languages that represent true 
as all bits set too.

CORBA's representation is true only over the 
wire.  When unmarshalled, the proxy or stub 
should normalize the value.  When 
marshalling, true values should be sent as 1, 
and only 1.

If your IDL compiler doesn't ensure this, 
then it's technically broken, and should have 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3265049</link><pubDate>Mon, 11 Jun 2012 14:10:36 +0500</pubDate><title>Message #3265049</title><guid isPermaLink="false">3265049@Uncensored</guid><description><![CDATA[<html><body>

<p>spel, you're totaly right.</p>
<p>and there is a good reason for ΅true" == !0</p>
<p>most processor architectures know something expressed in assembler like this:</p>
<p>jnz &lt;jump mark&gt; or jz &lt;jump mark&gt;</p>
<p>-&gt; Jump if (not) Zero; a register can be added in more modern processor architectures.</p>
<p>therefore: yes, its a good idea not to take IGs hack.</p>
<p>depending on the datatype you can even get more bad effects:</p>
<p>In corba, a boolean value is a byte value; while most c-compiler specific booleans are simply ints.</p>
<p>so if you true is above 255, it will suddenly become false in the corba layer.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3264947</link><pubDate>Mon, 11 Jun 2012 13:18:11 +0500</pubDate><title>Message #3264947</title><guid isPermaLink="false">3264947@Uncensored</guid><description><![CDATA[Correct me if I'm wrong, but wouldn't that expression only work when x is
either 0 or 1?  It's been a while since I've programmed in C, but I vaguely
remember that zero indicates false, but any non-zero value indicates true.
 If so, then the following code wouldn't work. 
  
 int x = 3; 
 x = 1 - x; 
  
 May not be as clever, but seems to me to be far more reliable to stick with
x = !x. 
   Spell 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3264853</link><pubDate>Mon, 11 Jun 2012 12:59:08 +0500</pubDate><title>Message #3264853</title><guid isPermaLink="false">3264853@Uncensored</guid><description><![CDATA[Decades later, I still find the expression "x = 1 - x" to flip the value of
a boolean represented as an integer to be wonderfully clever.  Call me a simpleton
but there's just something attractively elegant about it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3264105</link><pubDate>Fri, 08 Jun 2012 16:10:59 +0500</pubDate><title>Message #3264105</title><guid isPermaLink="false">3264105@Uncensored</guid><description><![CDATA[<html><body>

<p>yea, thats what happenes when you click codeproject links ;-)</p>
<p>fancily some proxies/dnses like it, some don't...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3264104</link><pubDate>Fri, 08 Jun 2012 15:51:37 +0500</pubDate><title>Message #3264104</title><guid isPermaLink="false">3264104@Uncensored</guid><description><![CDATA[One sign that you're a good programmer is that you don't put double dots into
hostnames. :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3261030</link><pubDate>Tue, 05 Jun 2012 07:33:21 +0500</pubDate><title>Message #3261030</title><guid isPermaLink="false">3261030@Uncensored</guid><description><![CDATA[<html><body>

<p>http://www.yacoset..com/Home/signs-that-you-re-a-good-programmer</p>
<p>A nice read.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3260933</link><pubDate>Mon, 04 Jun 2012 13:20:08 +0500</pubDate><title>Message #3260933</title><guid isPermaLink="false">3260933@Uncensored</guid><description><![CDATA[I'm not using PHP by choice; it's an existing mobile sync framework to which
I'm adding my own backend.  I would not have chosen PHP.  (No surprise there,
I write everything in C, but even if managed code were a given I probably
would have chosen some other language.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3260893</link><pubDate>Mon, 04 Jun 2012 09:00:10 +0500</pubDate><title>Message #3260893</title><guid isPermaLink="false">3260893@Uncensored</guid><description><![CDATA[ RTOL as far as I'm concerned. PHP was not designed; it's actually an amalgamation
of warts. It has warts growing on other warts.   
  
 ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3260838</link><pubDate>Sun, 03 Jun 2012 21:56:11 +0500</pubDate><title>Message #3260838</title><guid isPermaLink="false">3260838@Uncensored</guid><description><![CDATA[I've heard about it failing that way too.  What I really need is for it to
tell me what I screwed up, and print a stack trace as is commonly done on
computers that are not older than I am.  The reason I'm at this point in the
first place is because I did some Googling on PHP segfaults and eventually
landed on a web page that mentions "when the PHP interpreter segfaults it's
usually because of infinite recursion." 
  
 There's something called "xdebug" that I can supposedly add to my PHP to
help out with this.  I'm going to give it a try. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3260390</link><pubDate>Fri, 01 Jun 2012 23:04:26 +0500</pubDate><title>Message #3260390</title><guid isPermaLink="false">3260390@Uncensored</guid><description><![CDATA[LoanSharks-MacBook-Pro:~ ls$ php
<?php
     
     function foo() {
             foo();
     }
     
     foo();
     ?>
^D
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in - on line 4
LoanSharks-MacBook-Pro:~ ls$ php --version
PHP 5.3.8 (cli) (built: Dec  5 2011 21:24:09) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3260379</link><pubDate>Fri, 01 Jun 2012 21:15:38 +0500</pubDate><title>Message #3260379</title><guid isPermaLink="false">3260379@Uncensored</guid><description><![CDATA[Wow.  Just ... wow.

     $ php
     <?php
     
     function foo() {
	     foo();
     }
     
     foo();
     ?>
     Segmentation fault

If you accidentally perform an infinite recursion in PHP, it doesn't throw
an exception, it doesn't tell you it ran out of stack space, it just SEGFAULTS
THE INTERPRETER.

I've been banging my head on the keyboard for a week trying to figure out why
my Z-Push backend isn't allowing attachments to be downloaded, only to discover
tonight that I've been crashing the interpreter.

So much for the brave new world of managed code.  At least I can open my C
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3254787</link><pubDate>Fri, 25 May 2012 11:53:17 +0500</pubDate><title>Message #3254787</title><guid isPermaLink="false">3254787@Uncensored</guid><description><![CDATA[  
 Pondering: 
  
 Whenever I see the PHP directive "include_once" I want to change it to "include_now_once"
to make it more Pennsylvania Dutch. 
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3251800</link><pubDate>Sun, 20 May 2012 08:21:13 +0500</pubDate><title>Message #3251800</title><guid isPermaLink="false">3251800@Uncensored</guid><description><![CDATA[  
 You're right, of course, I mean 1k Hz, not 1k Khz.  Stilly me. 
  
 I am not sure where to find the pre-canned color bar image for the right
format, although I think I can find it for RGB, then convert it (although
I am not sure I can find it as a true 1920x1080 image). 
  
 Hrm. 
  
 I didn't finish the project, but I oughta.  I'd be nice to create a kind
of source filter that just generates this image. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3251124</link><pubDate>Thu, 17 May 2012 16:29:41 +0500</pubDate><title>Message #3251124</title><guid isPermaLink="false">3251124@Uncensored</guid><description><![CDATA[ Now that I think about it, I would imagine that there must be pre-canned
color bar images available somewhere in the right format.  Why not just grab
the one you need in the right resolution and play it back when requested?

  
 Are you sure you meant 1k KHz tone?  That would be equivalent to a 1 MHz
tone, which is beyond the range of human hearing.  Though that would be a
good frequency if you're testing a software low-pass or band filter. 
   Tone Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3251109</link><pubDate>Thu, 17 May 2012 15:16:29 +0500</pubDate><title>Message #3251109</title><guid isPermaLink="false">3251109@Uncensored</guid><description><![CDATA[  
 Yep, that's the site I found as well. 
  
 Oh well.  It takes a while to create the 1920x1080 Y/Cr/Cb image for the
v210 color scheme, but I think I got it.  That's a damned weird packing order.

  
 I hope I got it, anyway.  I'd love to do this with the proper color bar test,
but what I have should do the trick instead.  It's close, at least, just missing
the bottom colors, since I felt a tad too lazy to figure that out. 
  
 Now, to create a 1k Khz tone in the right format, and see if my filters work.
 Trying to work around not having the hardware I need to do a proper test.
 It also makes it easier to do testing on my dev box (which can't install
the hardware). 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3250998</link><pubDate>Thu, 17 May 2012 13:29:13 +0500</pubDate><title>Message #3250998</title><guid isPermaLink="false">3250998@Uncensored</guid><description><![CDATA[ A quick google and I found this site describing how to convert color values
between RGB and YUV, also called Y/Cr/Cb: 
  
 http://www.fourcc.org/fccyvrgb.php 
  
 It seems like it's a pretty straightforward calculation. 
   Color Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3250651</link><pubDate>Thu, 17 May 2012 10:07:10 +0500</pubDate><title>Message #3250651</title><guid isPermaLink="false">3250651@Uncensored</guid><description><![CDATA[  
 Has anyone here tried to create a set of color bars (as in, for television)
in code, but not for RGB... for YUV instead? 
  
 (That is, not RGB as in a standard bitmap, but YUV where you have chroma
and luma values instead of straight red/green/blue). 
  
 I want to generate a color bar pattern in raw v210 color scheme, 1080p resolution.
 But I'm not very up on setting up those values, and wondered if anyone here
might have a little more insight. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3248010</link><pubDate>Mon, 14 May 2012 12:47:21 +0500</pubDate><title>Re: EC2 FF11 and EC2.....</title><guid isPermaLink="false">3248010@Uncensored</guid><description><![CDATA[ >So the Ubuntu kernel runs better than Fedora in EC2?  Any idea what the
 
 >secret sauce is?   
  
 No, because it's a secret--literally. For a long time, EC2 kernels were somewhat
customized, and technical details of EC2's Xen customizations are under NDA.
This is changing, however; although Ubuntu 10.04 ships an ec2-specific Xen
kernel, the 12.04 is using the mainline linux-virtual kernel. 
  
 All that said, Amazon has their own Linux distribution which is CentOS based,
which might also be a good bet. Haven't tried it because it's not RightScale
integrated. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3247971</link><pubDate>Mon, 14 May 2012 10:45:41 +0500</pubDate><title>Message #3247971</title><guid isPermaLink="false">3247971@Uncensored</guid><description><![CDATA[oom not occuring as far as sysslogs indicate.  
I've updated the instances to mediums, but 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3247490</link><pubDate>Sun, 13 May 2012 23:18:01 +0500</pubDate><title>Re: EC2 FF11 and EC2.....</title><guid isPermaLink="false">3247490@Uncensored</guid><description><![CDATA[So the Ubuntu kernel runs better than Fedora in EC2?  Any idea what the secret
sauce is? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3247480</link><pubDate>Sun, 13 May 2012 21:30:53 +0500</pubDate><title>Re: EC2 FF11 and EC2.....</title><guid isPermaLink="false">3247480@Uncensored</guid><description><![CDATA[ >> The same configuration as used in EC2 appears on my laptop, where I  
 >>am so far unsuccessful in getting Firefox to die. I have to manually  
 >>kill it to reproduce the symptoms as I'm seeing them in EC2.  
  
 My default assumption is that this is not EC2 specific; Xen is pretty good
technology, and from the point of view of a userland process that isn't doing
anything fancy with the kernel, it's usually identical to a bare-metal Linux
instance. That said, there have been issues with specific Intel processor
models within the last year. I am losing the details, but the one I am thinking
of was I believe fixed in an Ubuntu -318 patchlevel kernel for Ubuntu 10.04
LTS. I don't know of the applicability to other distributions, but this issue
was specific to a particular model of Nehalem-based Xeons. So the standard
advice in the Linux world applies: make sure you're running the latest
kernel. I recommend Ubuntu over Fedora for the EC2 use case. Also, if you
are running into trouble, take note of /proc/cpuinfo for the CPU model information,
and it may be worth relaunching your instance repeatedly until you wind up
with different hardware. But of course this is may not really be specific
to EC2 at all. 
  
 Standard stupid questions apply: why is your Selenium/FF process dying? Could
it be something simple like the OOM killer? Enable core dumps (ulimit -c unlimited)
and capture the result. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3247478</link><pubDate>Sun, 13 May 2012 21:23:04 +0500</pubDate><title>Re: EC2 FF11 and EC2.....</title><guid isPermaLink="false">3247478@Uncensored</guid><description><![CDATA[ > I know that at the bottom tier, they can choke off performance to the 
 
 >point where things really start to be baaaaaaaad...   
  
 This is true of Micro instances: if one of your processes starts spinning,
and consuming the CPU, they will allow you to burst the CPU for a few seconds,
but after that, you're throttled pretty severely. You get what you pay for;
that is the lowest-end instance type. Micros might have a few other stability
issues but that's the main one, and it manifests from time to time as a briefly
unresponsive instance with a high "cpu steal" count. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237375</link><pubDate>Fri, 27 Apr 2012 17:32:08 +0500</pubDate><title>Re: EC2 FF11 and EC2.....</title><guid isPermaLink="false">3237375@Uncensored</guid><description><![CDATA[Might it have something to do with which level of EC2 service you're using?
 I know that at the bottom tier, they can choke off performance to the point
where things really start to be baaaaaaaad... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237276</link><pubDate>Fri, 27 Apr 2012 11:11:31 +0500</pubDate><title>EC2 FF11 and EC2.....</title><guid isPermaLink="false">3237276@Uncensored</guid><description><![CDATA[<html><body>

<p>I have not used EC2 yet, so hopefully someone else can chime in.  I have used Selenium, but not on an EC2 instance, so apart from adjusting for timeout issues, I have not had issues with Selenium and I have not had the FF instance die.</p>
<p><span>Thu Apr 26 2012 05:26:00 PM EDT</span><span>from kc5tja @ Uncensored </span></p>
<blockquote>
<div class="message_content"><tt>(sorry -- for context, .rl or .ro in the Web Stuff&gt; room to find my question concerning Firefox deaths on EC2, particularly when launched from Selenium 2.)</tt><br /> </div>
<p><tt>Well, long story short, Firefox 11 (launched by Selenium) is dying intermittently with a premature EOF, causing pain and suffering throughout the world. Or, at least, my office.</tt><br /> <br /> <tt>The same configuration as used in EC2 appears on my laptop, where I am so far unsuccessful in getting Firefox to die. I have to manually kill it to reproduce the symptoms as I'm seeing them in EC2.</tt><br /> <br /> <tt>I was hoping that someone here would be able to offer some advice on how to proceed with the debugging effort.</tt></p>
</blockquote>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237063</link><pubDate>Thu, 26 Apr 2012 17:26:00 +0500</pubDate><title>Message #3237063</title><guid isPermaLink="false">3237063@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237062</link><pubDate>Thu, 26 Apr 2012 17:24:48 +0500</pubDate><title>Message #3237062</title><guid isPermaLink="false">3237062@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237061</link><pubDate>Thu, 26 Apr 2012 17:23:16 +0500</pubDate><title>Message #3237061</title><guid isPermaLink="false">3237061@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237040</link><pubDate>Thu, 26 Apr 2012 16:01:27 +0500</pubDate><title>Message #3237040</title><guid isPermaLink="false">3237040@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Thu Apr 26 2012 04:00:38 PM EDT</span> <span>from ax25 </span></div>
<div class="message_content">
<p>Scripted Selenium?  Adjust timeouts on the part where it is waiting on content?</p>
<br /><br /></div>
</blockquote>
<p>Probably better to move this to programming room.  More folks in there that will probably have better answers.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3237039</link><pubDate>Thu, 26 Apr 2012 16:00:38 +0500</pubDate><title>Message #3237039</title><guid isPermaLink="false">3237039@Uncensored</guid><description><![CDATA[<html><body>

<p>Scripted Selenium?  Adjust timeouts on the part where it is waiting on content?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3235580</link><pubDate>Mon, 23 Apr 2012 13:23:24 +0500</pubDate><title>Message #3235580</title><guid isPermaLink="false">3235580@Uncensored</guid><description><![CDATA[Well, long story short, Firefox 11 (launched by Selenium) is dying intermittently with a premature EOF, causing pain and suffering throughout the world.  Or, at least, my office.

The same configuration as used in EC2 appears on my laptop, where I am so far unsuccessful in getting Firefox to die.  I have to manually kill it to reproduce the symptoms as I'm seeing them in EC2.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3235579</link><pubDate>Mon, 23 Apr 2012 13:15:56 +0500</pubDate><title>Message #3235579</title><guid isPermaLink="false">3235579@Uncensored</guid><description><![CDATA[  
 Obviously not to be mistaken for the chupacabra. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3235386</link><pubDate>Sun, 22 Apr 2012 07:54:23 +0500</pubDate><title>Message #3235386</title><guid isPermaLink="false">3235386@Uncensored</guid><description><![CDATA[Heh.  Or be like 'gnuplot' and 'gnutella' which have 'gnu' in their names
despite having nothing to do with the Fascist Software Foundation. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3235060</link><pubDate>Fri, 20 Apr 2012 18:03:41 +0500</pubDate><title>Message #3235060</title><guid isPermaLink="false">3235060@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Fri Apr 20 2012 05:22:04 PM EDT</span> <span>from kc5tja </span></div>
<div class="message_content"><tt>Anyone here familiar with acceptance testing using Capybara and Chromium browsers, particularly in an EC2 Ubuntu instance?</tt><br /> </div>
</blockquote>
<p>No, but it is a cute bugger for a rodent:</p>
<p>http://en.wikipedia.org/wiki/Capybara</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3235006</link><pubDate>Fri, 20 Apr 2012 17:22:04 +0500</pubDate><title>Message #3235006</title><guid isPermaLink="false">3235006@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3234795</link><pubDate>Fri, 20 Apr 2012 02:59:13 +0500</pubDate><title>Message #3234795</title><guid isPermaLink="false">3234795@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3233116</link><pubDate>Sat, 14 Apr 2012 11:31:23 +0500</pubDate><title>Message #3233116</title><guid isPermaLink="false">3233116@Uncensored</guid><description><![CDATA[git should be called GNU/git because even though Linus Torvalds created it,
Richard Stallman is capable of louder and more prominent whining. (Hey, what
goes for operating systems goes for source code management tools too, right?)

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3229581</link><pubDate>Sun, 01 Apr 2012 16:44:01 +0500</pubDate><title>Message #3229581</title><guid isPermaLink="false">3229581@Uncensored</guid><description><![CDATA[  
 Yeah, I'm not aware of anything like that in Windows. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3229563</link><pubDate>Sun, 01 Apr 2012 13:35:34 +0500</pubDate><title>Message #3229563</title><guid isPermaLink="false">3229563@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Tue Mar 27 2012 16:24:48 EDT</span> <span>from fleeb @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />Well, that's true. In C++, the only stack you'll get is if you're in a debugger... otherwise, you'll need the luck of the gods to help you track down an exception. </div>
</div>
</blockquote>
<p>at least in linux, its not like that.</p>
<p>http://code.citadel.org/?p=citadel.git;a=blob;f=citadel/citserver.c;h=088b584e1107a751cc5b935f4e08c8c858ea5f58;hb=HEAD#l90</p>
<p>does a simple backtrace...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3229356</link><pubDate>Sat, 31 Mar 2012 04:03:46 +0500</pubDate><title>Message #3229356</title><guid isPermaLink="false">3229356@Uncensored</guid><description><![CDATA[Personally, I love using Python. I can code the same program/script/data structure/spam/eggs
about half the time than it would take me to dev in another language. Actually,
I just finished doing some proof-of-concept code for semantic web development
with Python. It was very procedural, but it demonstrated the OWL ontology
in a representational form quite nicely. 
 I do tend to use Python where I used to use BASIC back in the day. Haven't
made the leap to using it as my shell, though. Maybe my kids will? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3229143</link><pubDate>Fri, 30 Mar 2012 17:13:12 +0500</pubDate><title>Message #3229143</title><guid isPermaLink="false">3229143@Uncensored</guid><description><![CDATA[I just finished writing a screen scraper that reformats the received data,
reformats it so that it is spoofing another system's output, and feeds it
into another screen scraper.  I feel so dirty.  (But hey, it's my first Python
program, so ... #winning?) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3228297</link><pubDate>Thu, 29 Mar 2012 10:19:46 +0500</pubDate><title>Message #3228297</title><guid isPermaLink="false">3228297@Uncensored</guid><description><![CDATA[<html><body>

<p>I am a fan of Python for quick what if proggies and have made some use of the ctypes module for extra added fun poking around in C libs:</p>
<p>http://docs.python.org/library/ctypes.html</p>
<p>You don't have to re-write C libraries, just use them from Python.</p></body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3227705</link><pubDate>Wed, 28 Mar 2012 17:21:41 +0500</pubDate><title>Message #3227705</title><guid isPermaLink="false">3227705@Uncensored</guid><description><![CDATA[  
 There's no doubt about it, Python is a nice language. If I had to choose
between it, Perl and Ruby, Python usually comes out on top. Clean, crisp,
readable syntax. The indenting thing is not the way I would have designed
it, but I can live with it. 
  
 If your job requires you to occasionally wade through academic papers describing
complex algorithms, you'll find that an increasing number of authors are expressing
their pseudocode in a suspiciously Pythonesque syntax. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3227620</link><pubDate>Wed, 28 Mar 2012 13:10:10 +0500</pubDate><title>Message #3227620</title><guid isPermaLink="false">3227620@Uncensored</guid><description><![CDATA[  
 For my part, I program to avoid using exceptions most of the time, and prefer
to pass error values instead.  I do most of my programming in C++. 
  
 When I have to use something that forces me to catch exceptions, I catch
them, and react accordingly. 
  
 I also try to do the whole RIIA thing (or whatever that acronym is) where
you use constructors to create resources and destructors to remove them in
a clean fashion, so an exception will automatically clean things up for you.

  
 Still, Python will allow you to walk an exception stack, as I recall, so
at least you can work out why your program stopped, and take action accordingly.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3227609</link><pubDate>Wed, 28 Mar 2012 12:32:53 +0500</pubDate><title>Message #3227609</title><guid isPermaLink="false">3227609@Uncensored</guid><description><![CDATA[ Since I'm a computer engineer and not a computer scientist, I could be off
on this idea, but it seems to me that exception handling is not too far off
from event-oriented programming.  Your program might encounter an exception
or receive an event at pretty much any time.  Either your code is set up to
handle it, or it gets passed up to the next level. 
  
 One other thought I had about exceptions, especially for languages that don't
automatically capture a stack trace, is to use correlators.  I've seen these
in some library APIs from time-to-time, but didn't really understand what
they were until somewhat recently. 
  
 As I understand it, a correlator is nothing more than a unique identifier
that gets passed into a stack chain from a higher-level caller.  For example:

  
 int corr = 13; 
 int rc = myFunc(arg1, arg2, corr); 
 int myFunc(int a, int b, int corr) { 
    int c; 
  
    c =
a + b; 
    return someOtherFunc(c, a, b, corr); 
 } 
 int someOtherFunc(int a, int b, int c, int corr) { 
    if (c < 0) { 
        printf("In function someOtherFunc, correlator=%d: %d is less than
zero.\n", corr, c); 
        return -1; 
    } 
    return a + b + c; 
 } 
  
 (Pardon any coding errors, I'm a little rusty with C) 
  
 The idea is to have a unique correlator for every high-level "operation"
that occurs.  That way, if a lower-level function encounters an exceptional
condition, the correlator can be used to trace back to the original operation.

  
 Of course, I think it's somewhat clumsy to have to pass a correlator value
into every function call.  I wonder if that's one reason I haven't seen them
used more often. 
   Correlated Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3227541</link><pubDate>Wed, 28 Mar 2012 09:28:15 +0500</pubDate><title>Message #3227541</title><guid isPermaLink="false">3227541@Uncensored</guid><description><![CDATA[Python seems to *want* the programmer to use exceptions.  For example, my
program uses urllib2 to fetch data via HTTPS from a remote server.  If that
operation fails, it throws an exception.  There is no return value to check.
 If you want the program to not crash you have to catch the exception.  That's
just how it's done. 
  
 What I found convenient was that I could put the exception handler anywhere
in the stack.  I was able to tell the program, "if any of that stuff up there
had a problem, take this action instead of that action."  Since it's a garbage
collected language, I also don't have to worry about freeing this buffer or
that buffer depending on which failure mode occurred. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3227010</link><pubDate>Tue, 27 Mar 2012 16:24:48 +0500</pubDate><title>Message #3227010</title><guid isPermaLink="false">3227010@Uncensored</guid><description><![CDATA[  
 Well, that's true.  In C++, the only stack you'll get is if you're in a debugger...
otherwise, you'll need the luck of the gods to help you track down an exception.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226999</link><pubDate>Tue, 27 Mar 2012 15:46:23 +0500</pubDate><title>Message #3226999</title><guid isPermaLink="false">3226999@Uncensored</guid><description><![CDATA[ TCL also dumps a stack trace for an uncaught exception.  Though I can't generalize,
since I've not done much programming in other scripting languages, it seems
like exception handling is somewhat easier in an interpreted language like
TCL, Perl, or Python, than it is in a compiled language like C or C++.  I
know that TCL, for example, gives the programmer the ability to create their
own control structures, which can make exception handling very easy. 
   TCL Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226982</link><pubDate>Tue, 27 Mar 2012 14:37:41 +0500</pubDate><title>Message #3226982</title><guid isPermaLink="false">3226982@Uncensored</guid><description><![CDATA[  
 In C++-land it's a little different than on the Java Ranch and in the Python
Pit: in C++, every exception doesn't print out the stack trace of the faulting
line... unless I'm quite mistaken. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226879</link><pubDate>Tue, 27 Mar 2012 07:08:15 +0500</pubDate><title>Message #3226879</title><guid isPermaLink="false">3226879@Uncensored</guid><description><![CDATA[  
 Exceptions yank control from the normal flow of a program, which on the one
hand prevents everything from getting completely out of control, but on the
other hand, make it hard to determine where the fault occured sometimes. 
It's very, very annoying to mysteriously have an exception get thrown somewhere
that kills your program, yet not have a freaking clue who threw it, and perhaps
a vague notion of why. 
  
 I suppose you can have the same problem without exceptions, but as a general
rule, I prefer to pay attention to all values retrieved from the functions
I call, and have code in place to react to them appropriately when something
is out of place (e.g. the returned file pointer is not valid, so don't try
to use it, react appropriately). 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226614</link><pubDate>Mon, 26 Mar 2012 14:42:40 +0500</pubDate><title>Message #3226614</title><guid isPermaLink="false">3226614@Uncensored</guid><description><![CDATA[Yes it's 2012 and I'm exploring the world of exception handling for the first
time.  Remember the part where I said I'm not a professional developer?  :)

  
 "Something went wrong over there; you should check it out" is a big change
from the world I normally play in, where the response is "We're going to crash
now; you'd better hope your users are smart enough to send in decent bug reports
so you can fix it in the next release" 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226464</link><pubDate>Mon, 26 Mar 2012 14:13:02 +0500</pubDate><title>Message #3226464</title><guid isPermaLink="false">3226464@Uncensored</guid><description><![CDATA[  
 I'm still waiting on Ford's response. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226446</link><pubDate>Mon, 26 Mar 2012 12:20:35 +0500</pubDate><title>Message #3226446</title><guid isPermaLink="false">3226446@Uncensored</guid><description><![CDATA[ > Exception handling is pretty cool.  Even in my little program I've   
 >already written pieces that are self-healing by simply catching any   
 >exception and returning an error to the function's caller.   
  
 This was tongue in cheek, right? ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226352</link><pubDate>Mon, 26 Mar 2012 11:09:50 +0500</pubDate><title>Message #3226352</title><guid isPermaLink="false">3226352@Uncensored</guid><description><![CDATA[Build monkeys and python... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226219</link><pubDate>Sun, 25 Mar 2012 21:04:45 +0500</pubDate><title>Message #3226219</title><guid isPermaLink="false">3226219@Uncensored</guid><description><![CDATA[  
 I had to use Python for the build system at my previous job (since the previous
person who worked on the build system used that language).  It isn't a terrible
language at all, but sometimes it gets weird (mostly related to the way it
handles inclusions... there's something that seemed mysterious about it to
me that shouldn't have). 
  
 I haven't used Python in a long time, though. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3226061</link><pubDate>Sat, 24 Mar 2012 22:26:59 +0500</pubDate><title>Message #3226061</title><guid isPermaLink="false">3226061@Uncensored</guid><description><![CDATA[  
 Some of you are going to cringe at this, but ... 
  
 I've been meaning to teach myself Python, so I can figure out what all the
fuss is about.  It seems to be a perennial favorite among hackers who aren't
into learning the language du jour and just want something good to stick with.

  
 There is a small program I needed to write to perform a specific task (scan
a VMware ESXi server's data stores and feed that data to Xymon -- something
that VMware's own API's completely suck at, but that's another story).  So
I decided it would be a good opportunity to bang something out in Python.
 The way to really get the feel for a language is to do an actual project
in it. 
  
 I don't think it'll become my absolute favorite language, but that's probably
because I've been coding in C for 25 years and I don't need to "evolve" for
resume/CV enhancement because I'm not a professional developer.  But
it does seem like a quite nice language for those times when you want to bang
something out quickly -- normally I'll write shell scripts for that. 
  
 So far I'm not sold on the whole "non C like syntax" thing.  I like semicolons
and curly braces.  I do like its use of "duck typing" though.  And what's
quite nice is the wealth of functionality that is available through existing
libraries, many of them already installed on a typical system. 
  
 Exception handling is pretty cool.  Even in my little program I've already
written pieces that are self-healing by simply catching any exception and
returning an error to the function's caller. 
  
 I'd definitely choose Python for a project where "managed code environment

 " was a requirement.  I might even consider it as an extension language for
Citadel someday. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3218689</link><pubDate>Sat, 03 Mar 2012 17:21:59 +0500</pubDate><title>Message #3218689</title><guid isPermaLink="false">3218689@Uncensored</guid><description><![CDATA[Umm ... yeah.  Someone spent a lot of time and money on that, but why? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3203638</link><pubDate>Fri, 24 Feb 2012 08:06:56 +0500</pubDate><title>Message #3203638</title><guid isPermaLink="false">3203638@Uncensored</guid><description><![CDATA[<html><body>

<p>http://9gag.com/gag/33088</p>
<p>...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3196513</link><pubDate>Mon, 13 Feb 2012 11:52:59 +0500</pubDate><title>Message #3196513</title><guid isPermaLink="false">3196513@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Sun Feb 12 2012 08:45:42 AM EST</span> <span>from IGnatius T Foobar @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Aren't there other true-open-source ecommerce systems out there already? Surely you aren't the first to do that? </div>
</div>
</blockquote>
<p>There are none that I could find that works specifically as an infusion for php-fusion 7.</p>
<p>I must have searched for at least 6 - 7 days to find one that worked.</p>
<p>I'm not the first to do it, which is the problem. The one that's available is severely out-dated and insecure. It would take me just as long to fix the old one as it would to build a better one. Any other ecommerce solutions for php-fusion are not free, nor open-source, and are sold through the author's website. I'm building one that is free, open-source, GNU/aGPL v3, etc.. standard infusion for php-fusion. Nobody has done one that works, is secure, is free, and complies to php-fusion's standards. until now... :)</p>
<p>-- <br />http://skpacman.hopto.org</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3196269</link><pubDate>Sun, 12 Feb 2012 08:45:42 +0500</pubDate><title>Message #3196269</title><guid isPermaLink="false">3196269@Uncensored</guid><description><![CDATA[Aren't there other true-open-source ecommerce systems out there already? Surely
you aren't the first to do that? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3190862</link><pubDate>Fri, 10 Feb 2012 16:53:12 +0500</pubDate><title>Message #3190862</title><guid isPermaLink="false">3190862@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Wed Feb 08 2012 08:31:30 AM EST</span> <span>from fleeb @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />I try not to create something unless I see a certain need for it, unless I'm just farting around (which I do occasionally to learn something). </div>
</div>
</blockquote>
<p>Which is the precise reason I decided to make my own ecommerce system for PHP-Fusion, instead of attempting to integrate someone else's, or paying a huge fee just to use one that's built for my purpose.</p>
<p>I figure, I have (most of) the skills to do it myself, and I'm tired of people charging big money for it, so why not piss everyone off by making my own (which I will distribute for free) and actually use my own on my other sites?</p>
<p>-- <br />http://skpacman.hopto.org</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3177035</link><pubDate>Wed, 08 Feb 2012 08:31:30 +0500</pubDate><title>Message #3177035</title><guid isPermaLink="false">3177035@Uncensored</guid><description><![CDATA[  
 I certainly follow this. 
  
 I try not to create something unless I see a certain need for it, unless
I'm just farting around (which I do occasionally to learn something). 
  
 So, I don't implement features unless the feature really is needed.  Saves
a lot of time, and ensures the code is just. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3168570</link><pubDate>Tue, 07 Feb 2012 09:21:09 +0500</pubDate><title>Message #3168570</title><guid isPermaLink="false">3168570@Uncensored</guid><description><![CDATA[<html><body>

<p>http://nathanmarz.com/blog/suffering-oriented-programming.html</p>
<p>the problem is just, if nobody feels the pain.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3106212</link><pubDate>Mon, 30 Jan 2012 09:49:01 +0500</pubDate><title>Message #3106212</title><guid isPermaLink="false">3106212@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Sun Jan 29 2012 03:21:02 PM EST</span> <span>from dothebart @ Uncensored </span></div>
<div class="message_content">
<p>os-comerce?</p>
<p>fleshmeat.org is your friend...</p>
<br /><br /></div>
</blockquote>
<p><br /> 404</p>
<p>you mean freshmeat.net?</p>
<p>-- <br />http://sdkproductions.hopto.org</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3106062</link><pubDate>Sun, 29 Jan 2012 15:21:02 +0500</pubDate><title>Message #3106062</title><guid isPermaLink="false">3106062@Uncensored</guid><description><![CDATA[<html><body>

<p>os-comerce?</p>
<p>fleshmeat.org is your friend...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3105701</link><pubDate>Fri, 27 Jan 2012 17:24:45 +0500</pubDate><title>Message #3105701</title><guid isPermaLink="false">3105701@Uncensored</guid><description><![CDATA[<html><body>

<p>I'm looking for a PHP/MySql based shopping cart software that can be easily integrated into another CMS (like PHP-Fusion or Pixie)</p>
<p>Anyone have any suggestions?</p>
<p>-- <br />http://sdkproductions.hopto.org</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3104861</link><pubDate>Wed, 25 Jan 2012 17:24:23 +0500</pubDate><title>A Brief, Incomplete, and Mostly Wrong History of Programming Languages</title><guid isPermaLink="false">3104861@Uncensored</guid><description><![CDATA[<html><body>

<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1801 - Joseph Marie Jacquard uses punch cards to instruct a loom to weave "hello, world" into a tapestry. Redditers of the time are not impressed due to the lack of tail call recursion, concurrency, or proper capitalization.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1842 - Ada Lovelace writes the first program. She is hampered in her efforts by the minor inconvenience that she doesn't have any actual computers to run her code. Enterprise architects will later relearn her techniques in order to program in UML.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1936 - Alan Turing invents every programming language that will ever be but is shanghaied by British Intelligence to be 007 before he can patent them.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1936 - Alonzo Church also invents every language that will ever be but does it better. His lambda calculus is ignored because it is insufficiently C-like. This criticism occurs in spite of the fact that C has not yet been invented.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1940s - Various "computers" are "programmed" using direct wiring and switches. Engineers do this in order to avoid the tabs vs spaces debate.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1957 - John Backus and IBM create FORTRAN. There's nothing funny about IBM or FORTRAN. It is a syntax error to write FORTRAN while not wearing a blue tie.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1958 - John McCarthy and Paul Graham invent LISP. Due to high costs caused by a post-war depletion of the strategic parentheses reserve LISP never becomes popular[1]. In spite of its lack of popularity, LISP (now "Lisp" or sometimes "Arc") remains an influential language in "key algorithmic techniques such as recursion and condescension"[2].</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1959 - After losing a bet with L. Ron Hubbard, Grace Hopper and several other sadists invent the Capitalization Of Boilerplate Oriented Language (COBOL) . Years later, in a misguided and sexist retaliation against Adm. Hopper's COBOL work, Ruby conferences frequently feature misogynistic material.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1964 - John Kemeny and Thomas Kurtz create BASIC, an unstructured programming language for non-computer scientists.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1965 - Kemeny and Kurtz go to 1964.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1970 - Guy Steele and Gerald Sussman create Scheme. Their work leads to a series of "Lambda the Ultimate" papers culminating in "Lambda the Ultimate Kitchen Utensil." This paper becomes the basis for a long running, but ultimately unsuccessful run of late night infomercials. Lambdas are relegated to relative obscurity until Java makes them popular by not having them.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1970 - Niklaus Wirth creates Pascal, a procedural language. Critics immediately denounce Pascal because it uses "x := x + y" syntax instead of the more familiar C-like "x = x + y". This criticism happens in spite of the fact that C has not yet been invented.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1972 - Dennis Ritchie invents a powerful gun that shoots both forward and backward simultaneously. Not satisfied with the number of deaths and permanent maimings from that invention he invents C and Unix.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1972 - Alain Colmerauer designs the logic language Prolog. His goal is to create a language with the intelligence of a two year old. He proves he has reached his goal by showing a Prolog session that says "No." to every query.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1973 - Robin Milner creates ML, a language based on the M&amp;M type theory. ML begets SML which has a formally specified semantics. When asked for a formal semantics of the formal semantics Milner's head explodes. Other well known languages in the ML family include OCaml, F#, and Visual Basic.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1980 - Alan Kay creates Smalltalk and invents the term "object oriented." When asked what that means he replies, "Smalltalk programs are just objects." When asked what objects are made of he replies, "objects." When asked again he says "look, it's all objects all the way down. Until you reach turtles."</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1983 - In honor of Ada Lovelace's ability to create programs that never ran, Jean Ichbiah and the US Department of Defense create the Ada programming language. In spite of the lack of evidence that any significant Ada program is ever completed historians believe Ada to be a successful public works project that keeps several thousand roving defense contractors out of gangs.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1983 - Bjarne Stroustrup bolts everything he's ever heard of onto C to create C++. The resulting language is so complex that programs must be sent to the future to be compiled by the Skynet artificial intelligence. Build times suffer. Skynet's motives for performing the service remain unclear but spokespeople from the future say "there is nothing to be concerned about, baby," in an Austrian accented monotones. There is some speculation that Skynet is nothing more than a pretentious buffer overrun.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1986 - Brad Cox and Tom Love create Objective-C, announcing "this language has all the memory safety of C combined with all the blazing speed of Smalltalk." Modern historians suspect the two were dyslexic.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1991 - Dutch programmer Guido van Rossum travels to Argentina for a mysterious operation. He returns with a large cranial scar, invents Python, is declared Dictator for Life by legions of followers, and announces to the world that "There Is Only One Way to Do It." Poland becomes nervous.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1995 - At a neighborhood Italian restaurant Rasmus Lerdorf realizes that his plate of spaghetti is an excellent model for understanding the World Wide Web and that web applications should mimic their medium. On the back of his napkin he designs Programmable Hyperlinked Pasta (PHP). PHP documentation remains on that napkin to this day.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1995 - Yukihiro "Mad Matz" Matsumoto creates Ruby to avert some vaguely unspecified apocalypse that will leave Australia a desert run by mohawked warriors and Tina Turner. The language is later renamed Ruby on Rails by its real inventor, David Heinemeier Hansson. [The bit about Matsumoto inventing a language called Ruby never happened and better be removed in the next revision of this article - DHH].</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1995 - Brendan Eich reads up on every mistake ever made in designing a programming language, invents a few more, and creates LiveScript. Later, in an effort to cash in on the popularity of Java the language is renamed JavaScript. Later still, in an effort to cash in on the popularity of skin diseases the language is renamed ECMAScript.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">1996 - James Gosling invents Java. Java is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Sun loudly heralds Java's novelty.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">2001 - Anders Hejlsberg invents C#. C# is a relatively verbose, garbage collected, class based, statically typed, single dispatch, object oriented language with single implementation inheritance and multiple interface inheritance. Microsoft loudly heralds C#'s novelty.</p>
<p style="color: #333333; font-family: Georgia, serif; line-height: 19px; text-align: left;">2003 - A drunken Martin Odersky sees a Reese's Peanut Butter Cup ad featuring somebody's peanut butter getting on somebody else's chocolate and has an idea. He creates Scala, a language that unifies constructs from both object oriented and functional languages. This pisses off both groups and each promptly declares jihad.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3092259</link><pubDate>Thu, 19 Jan 2012 08:22:53 +0500</pubDate><title>Message #3092259</title><guid isPermaLink="false">3092259@Uncensored</guid><description><![CDATA[<html><body>

<p>I'm thinking of something to re-fill my original cobalt qube with, since one won't get a more beautiful housing these days ;-)</p>
<p>...and the original mipsel with the 32mb ram is a little underpowered.</p>
<p>want to run squezeserver + some mpd &amp; stuff on it.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3074118</link><pubDate>Wed, 18 Jan 2012 13:45:37 +0500</pubDate><title>Message #3074118</title><guid isPermaLink="false">3074118@Uncensored</guid><description><![CDATA[You can actually get a product from Sony called a "NetBox". It hooks up to
any tv (old or new, RCA, hdmi, etc...) and your home network (wireless or
CAT-5e) and it reads from any home DLNA server (tVersity for example), and
from Netflix, YouTube, Slacker Radio, Pandora Radio, etc... tons of services
on one machine connected to your tv.   
  
 It costs around $100. The bad part is, it's from Sony. Nothing but proprietary
hardware and software, has the classic PSP type GUI and is buggy (rarely)
on a wireless network. The biggest downside is it can't connect to a 5ghz
wireless signal. I had to dumb-down my router to get it to work. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3074064</link><pubDate>Wed, 18 Jan 2012 11:41:42 +0500</pubDate><title>Message #3074064</title><guid isPermaLink="false">3074064@Uncensored</guid><description><![CDATA[Neat, but I think I'm going to get a Raspberry Pi instead.  Of course I'll
probably do something totally stupid like put it in a rack mount chassis.

  
 I've always been looking for a cheap way to turn my television into a digital
media terminal.  Most new televisions have this kind of thing built in but
I've got a 32" CRT that isn't getting replaced anytime soon.  And besides,
most of the new TV's only play your own content; I want to play YouTube. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3072243</link><pubDate>Sat, 14 Jan 2012 06:08:58 +0500</pubDate><title>Message #3072243</title><guid isPermaLink="false">3072243@Uncensored</guid><description><![CDATA[<html><body>

<p>http://gnublin.org/index.php?title=Hauptseite</p>
<p>tiny little ARM computer, where you might be able to understand the hardware and do some coding..</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3072015</link><pubDate>Fri, 13 Jan 2012 14:19:09 +0500</pubDate><title>Message #3072015</title><guid isPermaLink="false">3072015@Uncensored</guid><description><![CDATA[  
 It was one of the better moments in this room. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3072003</link><pubDate>Fri, 13 Jan 2012 13:52:08 +0500</pubDate><title>Message #3072003</title><guid isPermaLink="false">3072003@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Thu Jan 12 2012 02:59:48 PM EST</span> <span>from Ford II @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>Dec 19 2011 11:56pm from ax25 @uncnsrd <br />Would love to do a day of pair programming with you fleeb!  (Hope <br />that does not sound to gay!)--- PPS - hope you are not gay,  I am <br />from a generation and don't think it is. <br /><br />Ax25 </blockquote>
<br />Sorry, that had me laughing a lot. :-) </div>
</div>
</blockquote>
<p>I need to lay off the sauce when posting in future :-)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071635</link><pubDate>Thu, 12 Jan 2012 16:46:53 +0500</pubDate><title>Message #3071635</title><guid isPermaLink="false">3071635@Uncensored</guid><description><![CDATA[  
 TMDFB III 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071615</link><pubDate>Thu, 12 Jan 2012 16:17:26 +0500</pubDate><title>Message #3071615</title><guid isPermaLink="false">3071615@Uncensored</guid><description><![CDATA[  
 Volkswagon's Ford Bug.  Test drive one today. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071586</link><pubDate>Thu, 12 Jan 2012 15:44:05 +0500</pubDate><title>Message #3071586</title><guid isPermaLink="false">3071586@Uncensored</guid><description><![CDATA[  
 Ford is a bug. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071581</link><pubDate>Thu, 12 Jan 2012 15:39:57 +0500</pubDate><title>Message #3071581</title><guid isPermaLink="false">3071581@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, ford a little late to the party? or some bug?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071558</link><pubDate>Thu, 12 Jan 2012 15:03:25 +0500</pubDate><title>Message #3071558</title><guid isPermaLink="false">3071558@Uncensored</guid><description><![CDATA[  A last work about ifs versus switch, the downside of switch is that it has
to be one unbroken code block. 
  A string of ifs can be broken out into separate functions grouped by category.

   if (handlemathfunctions() == 0) 
     if (handlestringfunctions() == 0) 
       if (handlekitchensinkfunctions() == 0) 
         return "command not found."; 
  
  and each of those three functions can have strings of ifs in them. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071555</link><pubDate>Thu, 12 Jan 2012 14:59:48 +0500</pubDate><title>Message #3071555</title><guid isPermaLink="false">3071555@Uncensored</guid><description><![CDATA[ > Dec 19 2011 11:56pm from ax25 @uncnsrd   
 >Would love to do a day of pair programming with you fleeb!  (Hope  
 >that does not sound to gay!)--- PPS - hope you are not gay,  I am  
 >from a generation and don't think it is.   
 >  
 >Ax25  
  
 Sorry, that had me laughing a lot. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071552</link><pubDate>Thu, 12 Jan 2012 14:57:51 +0500</pubDate><title>Re: if statements == goto?</title><guid isPermaLink="false">3071552@Uncensored</guid><description><![CDATA[ >Agreed.  A switch statement is less evil compiled.   
  
 A switch statement is brilliantly efficient, but I thought we were talking
about a pile of string compare ifs. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071551</link><pubDate>Thu, 12 Jan 2012 14:55:52 +0500</pubDate><title>Message #3071551</title><guid isPermaLink="false">3071551@Uncensored</guid><description><![CDATA[ > Basically, you'd encapsulate the behavior for each different if-else  

 >into a separate object, one for each "branch."  Then you'd just pass   
 >the appropriate object into your readloop() function.  The problem I   
  
 this would end up about the same as the hash lookup, except it's broken into
two parts. The lookup in the hash would be like the lookup in the virtual
function table and making the right object, would be like building the hash.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071546</link><pubDate>Thu, 12 Jan 2012 14:53:47 +0500</pubDate><title>Message #3071546</title><guid isPermaLink="false">3071546@Uncensored</guid><description><![CDATA[ >it also depends on the cost of the decision evaluated by the if; i.e.  
 >strcmp's aren't that cheap if its a dozend of them in a row.   
  
 ahhh... see... but they are. 
  count the cycles of the worst case scenario, then divide that by the processor
speed and see how many zeroes are to the right of the decimal point. You might
be surprised. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3071098</link><pubDate>Wed, 11 Jan 2012 18:49:21 +0500</pubDate><title>Message #3071098</title><guid isPermaLink="false">3071098@Uncensored</guid><description><![CDATA[<html><body>

<p>heh, just found in the RSS feed:</p>
<p>As mobile devices become a major development platform, scripting languages are beginning to fall out of favor.<br /><br /> <a href="http://drdobbs.com/mobile/232400093" target="webcit01">http://drdobbs.com/mobile/232400093</a></p>
<p>though there still are c-carpet and java on phones. well. I wouldn't exactly call that "scripting languages are beginning to fall out of favour" </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3070162</link><pubDate>Mon, 09 Jan 2012 22:49:30 +0500</pubDate><title>Message #3070162</title><guid isPermaLink="false">3070162@Uncensored</guid><description><![CDATA[Arbitrary format strings just invite abuse, of course.  I think some of the
compilers now throw a warning if you try to supply a variable as a format
string. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3064789</link><pubDate>Wed, 28 Dec 2011 09:55:45 +0500</pubDate><title>Message #3064789</title><guid isPermaLink="false">3064789@Uncensored</guid><description><![CDATA[  
 Well, that's another thing.  I try not to have any formatting strings 'formatted'
that come from users, unless I do so with intention... and even then, I use
my own formatting language (usually simple replacement, like ${VARNAME} getting
translated to the value of VARNAME). 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3064571</link><pubDate>Tue, 27 Dec 2011 17:12:01 +0500</pubDate><title>Message #3064571</title><guid isPermaLink="false">3064571@Uncensored</guid><description><![CDATA[<html><body>

<p>the webcit templating engine also offers an effective way around.</p>
<p>it merely uses hard coded formatstrings to add a %d to strings.</p>
<p>though i'm not yet done with templating everything ;-)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3064567</link><pubDate>Tue, 27 Dec 2011 16:59:39 +0500</pubDate><title>Message #3064567</title><guid isPermaLink="false">3064567@Uncensored</guid><description><![CDATA[  
 I do not use printf-style formattings (outgoing or incoming) for this very
reason in my C++ work.  I prefer to use input streams, regular expressions,
and/or a kind of BNF parser that boost offers to parse input, depending on
what I need to do. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3064490</link><pubDate>Tue, 27 Dec 2011 13:44:33 +0500</pubDate><title>Message #3064490</title><guid isPermaLink="false">3064490@Uncensored</guid><description><![CDATA[<html><body>

<p>http://events.ccc.de/congress/2011/Fahrplan/events/4817.en.html</p>
<p>whew. creating sort of a programming language backend, that takes format string exploits from carefuly handcrafting to an automated generation of code therefore..</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3061373</link><pubDate>Tue, 20 Dec 2011 22:18:40 +0500</pubDate><title>Message #3061373</title><guid isPermaLink="false">3061373@Uncensored</guid><description><![CDATA[  
 Oh, ever since boost::bind (or tr1::bind, if you prefer), I love doing callbacks,
and use them quite often.  You can do some amazingly creative things with
bind. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060984</link><pubDate>Tue, 20 Dec 2011 02:23:06 +0500</pubDate><title>Message #3060984</title><guid isPermaLink="false">3060984@Uncensored</guid><description><![CDATA[<html><body>

<p>*giggles* yea bingo ;)</p>
<p>I think the size of the switch statement mustn't exceed a certain size, else callback functions are the better choice.</p>
<p>http://code.citadel.org/?p=citadel.git&amp;a=blob&amp;h=94777828a5974c6f9e7229a97c765b7a8531beb3&amp;hb=ae6cddd2ff16f7056db3c773a96f20bc77f5d2c3&amp;f=citadel/event_client.c</p>
<p>i'd say here we have some edge cases *chuckles*</p>
<p>also some code who could use some review. so, comments welcome.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060943</link><pubDate>Tue, 20 Dec 2011 00:17:21 +0500</pubDate><title>Message #3060943</title><guid isPermaLink="false">3060943@Uncensored</guid><description><![CDATA[  
 Hilariously, I am notoriously gay.  But I've been in a long term monogamous
relationship, so don't worry about it. 
  
 I've just been programming regularly for over a decade, while keeping up
with based C++ techniques and advances on the language.  After a while, you
get a feel for things. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060933</link><pubDate>Mon, 19 Dec 2011 23:56:22 +0500</pubDate><title>Message #3060933</title><guid isPermaLink="false">3060933@Uncensored</guid><description><![CDATA[<html><body>

<p>Would love to do a day of pair programming with you fleeb!  (Hope that does not sound to gay!)--- PPS - hope you are not gay,  I am from a generation and don't think it is.</p>
<p>Ax25</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060931</link><pubDate>Mon, 19 Dec 2011 23:52:10 +0500</pubDate><title>Message #3060931</title><guid isPermaLink="false">3060931@Uncensored</guid><description><![CDATA[  
 I've found using a series of if statements doesn't help with legibility.
 When I have to work with the code later, it just looks like junk to me. 
Hard to wash through it and get at what you want to do. 
  
 A switch statement that calls one of a number of tailored functions lets
you get right to where you need to go, is very legible, and is quite fast.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060925</link><pubDate>Mon, 19 Dec 2011 23:50:48 +0500</pubDate><title>Message #3060925</title><guid isPermaLink="false">3060925@Uncensored</guid><description><![CDATA[  
 Depending on the situation, I'll either use a switch statement or function
overloading. 
  
 If I have to choose a path of execution based on some kind of number, I use
the switch statement.  It's not too hard to read, fairly fast to execute,
and just works. 
  
 If I have to choose a path of execution based on a kind of object, I use
function overloading.  I write the same function several times for a particular
object, but use different parameters.  So, while it looks like you're always
calling the same function in code, you're actually calling a number of different
related functions that do mostly the same thing, but tailored for each type
of object (which, of course, is the point of function overloading). 
  
 If I have to choose a path of execution based on a string, though... ugh.
 I normally find some way to convert the string to a number, then do a switch
statement.  All those if/elses don't improve legibility in this case. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060924</link><pubDate>Mon, 19 Dec 2011 23:48:40 +0500</pubDate><title>if statements == goto?</title><guid isPermaLink="false">3060924@Uncensored</guid><description><![CDATA[<html><body>

<p>Agreed.  A switch statement is less evil compiled.</p>
<p>Not sure why a series of if statements is evil per say, (seems like a goto of old....)</p>
<p>Ax25.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060851</link><pubDate>Mon, 19 Dec 2011 17:42:26 +0500</pubDate><title>Message #3060851</title><guid isPermaLink="false">3060851@Uncensored</guid><description><![CDATA[    
 (use and misuse, I should say.)   
  
  
 a hashtable (or for non-sparse integer keys, just a vector) pointing to an
object that implements a particular interface can be a way to go. (When you
use an enum in java, you automatically get such an ordinal-indexed array of
objects, and you also automatically get a way to lookup the enum object instance
that correspondsto a particular name. and then you could invoke some abstract
method on it. 
  
 but if your problem is too small for this, you need to ask why not a switch
statement 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060843</link><pubDate>Mon, 19 Dec 2011 17:37:16 +0500</pubDate><title>Message #3060843</title><guid isPermaLink="false">3060843@Uncensored</guid><description><![CDATA[  
 Sorry, I missed something, is there a reason why the switch statement is
inappropriate? 
  
 Anyway, in Java, you might use an enum class that implements a method, or
its close cousin, the so-called typesafe enum design pattern. 
  
 But it really depends on the problem at hand. There are tons of ways you
can use the polymorphism of OO languages, and they are not all created equal;
other examples are the command-chain pattern, which is sort of a special case
of the composite pattern, and the visitor pattern. 
  
 In many cases, functional languages can express these same patterns more
concisely. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060786</link><pubDate>Mon, 19 Dec 2011 16:24:21 +0500</pubDate><title>Message #3060786</title><guid isPermaLink="false">3060786@Uncensored</guid><description><![CDATA[ I can imagine an alternative approach using some object-oriented design,
but I'm a bit rusty on my OOD, so it might not be a great design. 
  
 Basically, you'd encapsulate the behavior for each different if-else into
a separate object, one for each "branch."  Then you'd just pass the appropriate
object into your readloop() function.  The problem I see is how those object
get generated.  If you make an object factory class, then you may end up with
a similar chain of if-elses, or switch statements, inside the class to generate
the appropriate objects. 
  
 Maybe LS or fleeb might have some interesting suggestions. 
   OO Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3060631</link><pubDate>Mon, 19 Dec 2011 11:47:22 +0500</pubDate><title>Message #3060631</title><guid isPermaLink="false">3060631@Uncensored</guid><description><![CDATA[ > Doing a quick google about the code snippet you posted, bart, would   
 >lead me to think that the code could be redone by using foo as an index
 
 >into a table of function pointers.   
  
 That's exactly what dothebart likes to do when confronted with multiple screenfuls
of if-else.  He seems to be fond of hash tables whose values are function
pointers.  I have to admit that it does offer an additional amount of modularity;
when new branches are introduced one only needs to "register" additional functions
into the system. 
  
 I prefer to only see that coding style used for very large and homogenous
lookups.  It is a style that can be (and is) overused at times.  One must
weigh the performance benefits against the complexity.  A "Rumpelstiltskin
lookup" is not as efficient but it is quite easy to follow when reading the
code. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3059527</link><pubDate>Fri, 16 Dec 2011 14:21:58 +0500</pubDate><title>Message #3059527</title><guid isPermaLink="false">3059527@Uncensored</guid><description><![CDATA[<html><body>

<blockquote>
<div class="message_header"><span>Fri Dec 16 2011 13:58:09 EST</span> <span>from Ford II @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Anybody who has a problem with strings of ifs all toegther in a row in anything other than a really tight loop sequence has really no concept of how fucking fast cpus really are nowadays. </div>
</div>
</blockquote>
<p>anybody claiming this doesn't have a clue how branch prediction works.</p>
<p>it also depends on the cost of the decision evaluated by the if; i.e. strcmp's aren't that cheap if its a dozend of them in a row.</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3059517</link><pubDate>Fri, 16 Dec 2011 13:58:09 +0500</pubDate><title>Message #3059517</title><guid isPermaLink="false">3059517@Uncensored</guid><description><![CDATA[ Anybody who has a problem with strings of ifs all toegther in a row in anything
other than a really tight loop sequence has really no concept of how fucking
fast cpus really are nowadays. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3058031</link><pubDate>Tue, 13 Dec 2011 19:02:24 +0500</pubDate><title>Message #3058031</title><guid isPermaLink="false">3058031@Uncensored</guid><description><![CDATA[<html><body>

<blockquote>
<div class="message_header"><span>Tue Dec 13 2011 14:56:14 EST</span> <span>from Spell Binder @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Ahhhh, ok. I've informally called those if-ladders. </div>
</div>
</blockquote>
<p>oh... and I must admit I created the name "rumpelstilskin lookup" as an homage to the brothers grimms fairy tale, about the little guy skipping around his fire place...</p>
<p>and... the guy asking it for his name with several (dumb) successless attempts to guess its name (though he knows its name)</p>
<p>well, and yes, that name should show a little disrespect of the authors of such beasts.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3058022</link><pubDate>Tue, 13 Dec 2011 18:46:17 +0500</pubDate><title>Message #3058022</title><guid isPermaLink="false">3058022@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Tue Dec 13 2011 14:56:14 EST</span> <span>from Spell Binder @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Ahhhh, ok. I've informally called those if-ladders. <br /><br />And I had the same impression about those web sites. I looked through them trying to find some examples of the coding techniques they're suggesting, but couldn't find any. Then I realized they wanted me to sign up and pay for a course to learn those techniques. <br /><br />Doing a quick google about the code snippet you posted, bart, would lead me to think that the code could be redone by using foo as an index into a table of function pointers. <br />Spell </div>
</div>
</blockquote>
<p>original: ~600 lines with html in it</p>
<p>http://code.citadel.org/?p=citadel.git&amp;a=blob&amp;h=bd60ecb3d3f19c7b03f2a26d473a565cb1d94e7c&amp;hb=d193489281ea51b1f323c1e81a775c88f8cf97ca&amp;f=messages.c</p>
<p>switched version...: ~400 lines</p>
<p>http://code.citadel.org/?p=citadel.git&amp;a=blob&amp;h=ff87641bf0412999c7658d12f95b8241737c011a&amp;hb=3539de2162e0c4bc1ea804e0cd5bc667d39aa8d1&amp;f=webcit/messages.c</p>
<p>handlered version (as its now): ~150 lines</p>
<p>http://code.citadel.org/?p=citadel.git&amp;a=blob&amp;h=5ae3eb0d491601d2e4d5c6c51e01a534e715c41e&amp;hb=fa5cd0e6595d211591cc8eebfa81874b03b6162d&amp;f=webcit/messages.c</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3057895</link><pubDate>Tue, 13 Dec 2011 14:56:14 +0500</pubDate><title>Message #3057895</title><guid isPermaLink="false">3057895@Uncensored</guid><description><![CDATA[ Ahhhh, ok.  I've informally called those if-ladders. 
  
 And I had the same impression about those web sites.  I looked through them
trying to find some examples of the coding techniques they're suggesting,
but couldn't find any.  Then I realized they wanted me to sign up and pay
for a course to learn those techniques. 
  
 Doing a quick google about the code snippet you posted, bart, would lead
me to think that the code could be redone by using foo as an index into a
table of function pointers. 
   Spell 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3057345</link><pubDate>Mon, 12 Dec 2011 14:41:52 +0500</pubDate><title>Message #3057345</title><guid isPermaLink="false">3057345@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mon Dec 12 2011 14:15:40 EST</span> <span>from Spell Binder @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Rumpelstiltskin lookup? </div>
</div>
</blockquote>
<p>if foo==1 {</p>
<p>} else if foo ==2 {</p>
<p> </p>
<p>} else if foo == 3 {</p>
<p> </p>
<p>}....</p>
<p>while readable maybe true up to half a dozend ones, it usualy grows more over time, and performance drops.</p>
<p>maintaineability also grows harder over time.</p>
<p>and once you reach 3 layers of if / loops/ etc inside of such a rumpelstilskin lookup, or even a second layer of rumpelstilskin lookup, maintaineability grows to a nitemare.</p>
<p>for that reason the linux kernel has a styleguide for the maximum depth  in braces through the 8 tabs indention and a maximum of 80 columns, and a limited number of lines per function.</p>
<p>for example</p>
<p>webcit/messages.c:readloop()</p>
<p>was in such a state, where you wouldn't be able to tell from reading through it whether touching a line would introduce bugs in one of the message views by reading through it on and on.</p>
<p>I wouldn't say its perfect now, plus you still have to read a lot to understand it, but once you did all that reading, its a pretty safe guess which code belongs to which view, and where to look for bugs in the webinterface.</p>
<p>btw, these both websites are most of just marketing blurb for a special consulting company ;-) but the title is nice to ignite discussions.</p></body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3057332</link><pubDate>Mon, 12 Dec 2011 14:15:40 +0500</pubDate><title>Message #3057332</title><guid isPermaLink="false">3057332@Uncensored</guid><description><![CDATA[ Rumpelstiltskin lookup? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3057313</link><pubDate>Mon, 12 Dec 2011 13:06:05 +0500</pubDate><title>Message #3057313</title><guid isPermaLink="false">3057313@Uncensored</guid><description><![CDATA[<html><body>

<p>I don't see what the big deal is with using "IF" in programming, as long as it's not a massive program. For my uses (small php-based pages, or cms), I see no real reason to move away from using IF's since they don't really get in the way.</p>
<p>For larger programs, though, object-oriented logic seems much easier to scale and change than hard IF statements..</p>
<p>I guess I'm kinda on the fense for that one...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3057291</link><pubDate>Mon, 12 Dec 2011 12:14:58 +0500</pubDate><title>Message #3057291</title><guid isPermaLink="false">3057291@Uncensored</guid><description><![CDATA[Sometimes it's appropriate to do a Rumpelstiltskin lookup -- they're *readable*
. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3057252</link><pubDate>Mon, 12 Dec 2011 11:06:09 +0500</pubDate><title>Message #3057252</title><guid isPermaLink="false">3057252@Uncensored</guid><description><![CDATA[<html><body>

<p>http://www.antiifcampaign.com/</p>
<p>Rumpelstilskin lookups go away!</p>
<p>http://www.antiifschool.com/</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3044136</link><pubDate>Mon, 14 Nov 2011 12:05:51 +0500</pubDate><title>Message #3044136</title><guid isPermaLink="false">3044136@Uncensored</guid><description><![CDATA[He even becomes more interesting if you click on him and follow the link to
his home page.  From there you can even view his resume/CV.  It says he's
a member of Toastmasters.  I am looking forward to hearing his very useful
comments during the next toast. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3043882</link><pubDate>Sun, 13 Nov 2011 10:04:32 +0500</pubDate><title>Message #3043882</title><guid isPermaLink="false">3043882@Uncensored</guid><description><![CDATA[ "I am looking forward to using these very useful debugging capabilities on
my next Bash scripting project." 
   
  What a dork. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3043312</link><pubDate>Fri, 11 Nov 2011 08:08:22 +0500</pubDate><title>Message #3043312</title><guid isPermaLink="false">3043312@Uncensored</guid><description><![CDATA[<html><body>

<p>found in the feeds...</p>
<p><em>http://linux-news.org/index.php/2011/11/10/how-to-debug-bash-scripts/</em></p>
<p>did you know the line number parts?</p>
<p><em>In large scripts, it may be helpful to prefix this debugging output with the script name, line number and function name. You can do this by setting the following environment variable:</em></p>
<div>
<pre><strong><em>export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '</em></strong></pre>
</div>
<p><em>Let’s trace our example script again to see the new debugging output:</em></p>
<div>
<pre><strong><em>$ bash -x example_script.sh +example_script.sh:2:: echo 'Hello ayman,' Hello ayman,</em></strong><br /><br /><br /></pre>
</div>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3040560</link><pubDate>Sat, 29 Oct 2011 22:24:25 +0500</pubDate><title>Message #3040560</title><guid isPermaLink="false">3040560@Uncensored</guid><description><![CDATA[Shall we have a discussion about our favorite programming fonts? 
  
 I just discovered Inconsolata and I've got to say it is one of the nicest
I've seen.  It just became my primary console font on all of my desktops and
laptops. 
  
 Some of my other favorites have been ProFont and Terminus, but these only
look good at specific point sizes. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3039734</link><pubDate>Thu, 27 Oct 2011 14:00:48 +0500</pubDate><title>Message #3039734</title><guid isPermaLink="false">3039734@Uncensored</guid><description><![CDATA[ > this was years ago, of course; maybe they've got their act together   
 >now.   
  
 yeah, like things generally get better over time. Right. 
   I applaud your efforts, but the world around you just sucks. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3037101</link><pubDate>Thu, 20 Oct 2011 04:42:35 +0500</pubDate><title>Message #3037101</title><guid isPermaLink="false">3037101@Uncensored</guid><description><![CDATA[<html><body>

<p>so... theres a python solution for it..</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3037090</link><pubDate>Thu, 20 Oct 2011 04:06:38 +0500</pubDate><title>Message #3037090</title><guid isPermaLink="false">3037090@Uncensored</guid><description><![CDATA[<html><body>

<p>I have absolutely no clue about those tools, I merely use them when I write ebuilds for gentoo. And there are only really few tarballs out their which don't need some patching and throwing of options in order to configure and build properly. Most of them seem to have been tried only on the coders own computer. So the "auto" is kind of a sick joke, like the "easy" is in the MS world.</p>
<p>I recently found out about WAF, which is so ubar, you ship a version of the waf script with your tarball instead of relying on a version isntalled on your system. Samba4 uses it, also some other bigger tools.</p>
<p>http://code.google.com/p/waf/</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036727</link><pubDate>Tue, 18 Oct 2011 17:55:42 +0500</pubDate><title>Message #3036727</title><guid isPermaLink="false">3036727@Uncensored</guid><description><![CDATA[In the year 2525, the code began writing itself. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036545</link><pubDate>Tue, 18 Oct 2011 09:46:49 +0500</pubDate><title>Message #3036545</title><guid isPermaLink="false">3036545@Uncensored</guid><description><![CDATA[<html><body>

<blockquote>
<div class="message_header"><span>Mon Oct 17 2011 23:58:00 EDT</span> <span>from IGnatius T Foobar @ Uncensored </span></div>
<div class="message_content">
<div>
<blockquote>this was years ago, of course; maybe they've got their act together <br />now.  </blockquote>
# Copyright (c) 20011 by IGnatius T Foobar </div>
</div>
</blockquote>
<p>so you're ahead of your time just a little bit...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036441</link><pubDate>Mon, 17 Oct 2011 23:58:00 +0500</pubDate><title>Message #3036441</title><guid isPermaLink="false">3036441@Uncensored</guid><description><![CDATA[ > this was years ago, of course; maybe they've got their act together   
 >now.   
  
 Doubtful.  FSF doesn't really write code anymore.  Nowadays they spend most
of their time trying to be a socially dysfunctional version of the EFF. 
  
 That's why I try to put comments in my source that look like this: 
  
 # Copyright (c) 20011 by IGnatius T Foobar 
 # This program is released under the terms of the GNU General Public License
v3 
 # It is intended to run on the Linux operating system, which is open source.

  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036357</link><pubDate>Mon, 17 Oct 2011 16:45:13 +0500</pubDate><title>Message #3036357</title><guid isPermaLink="false">3036357@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mon Oct 17 2011 16:25:56 EDT</span> <span>from LoanShark @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>scripts for you, is just as confusing as autoconf itself. Our build <br />was completely broken for weeks when we tried to switch to it. </blockquote>
<br />Not even aahz's fault... probably mine. </div>
</div>
</blockquote>
<p>nope, mine.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036352</link><pubDate>Mon, 17 Oct 2011 16:31:20 +0500</pubDate><title>Message #3036352</title><guid isPermaLink="false">3036352@Uncensored</guid><description><![CDATA[  
 this was years ago, of course; maybe they've got their act together now.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036351</link><pubDate>Mon, 17 Oct 2011 16:30:54 +0500</pubDate><title>Message #3036351</title><guid isPermaLink="false">3036351@Uncensored</guid><description><![CDATA[  
 the most horribly broken part, I'd say, was libtool and its attempts at Mac
OS X compatibility. Would have been much more expedient to hand-code the makefiles.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3036349</link><pubDate>Mon, 17 Oct 2011 16:25:56 +0500</pubDate><title>Message #3036349</title><guid isPermaLink="false">3036349@Uncensored</guid><description><![CDATA[ >scripts for you, is just as confusing as autoconf itself.  Our build   
 >was completely broken for weeks when we tried to switch to it.   
  
 Not even aahz's fault... probably mine. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034863</link><pubDate>Tue, 11 Oct 2011 22:12:08 +0500</pubDate><title>Message #3034863</title><guid isPermaLink="false">3034863@Uncensored</guid><description><![CDATA[ > In fucking sane.   
  
 Oh you don't know the half of it  :) 
  
 The configuration language for automake, which writes your autoconf scripts
for you, is just as confusing as autoconf itself.  Our build was completely
broken for weeks when we tried to switch to it. 
  
 I often wonder whether some projects would be better served by a simple little
shell script instead of this massive configuration system.  Or perhaps we
need a super-simplified build system framework, designed by people who spend
most of their time as system administrators, not AI hackers (or in the case
of Stallman, AI hacker wannabes). 
  
 For example, why can't a configure script be *written* in shell instead of
generated?   
  
 Not that it's better anywhere else... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034672</link><pubDate>Tue, 11 Oct 2011 07:38:03 +0500</pubDate><title>Message #3034672</title><guid isPermaLink="false">3034672@Uncensored</guid><description><![CDATA[<html><body>

<blockquote>
<div class="message_header"><span>Mon Oct 10 2011 20:45:13 EDT</span> <span>from Ford II @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>Well the Qt world has got CMake etc. autoconf has its niceties and <br />it's probably the right thing for some projects that want portability</blockquote>
<br />
<blockquote>to a wide array of obscure archs. (And it was fun to learn, back in the </blockquote>
<br /><br />I remember the first time around when you tried to explain it to me, and I didn't get it then, and I don't get it now. <br />I'm glad it's one of those things that I ignored and it went away so I'll never have to bother with it. Kinda like corba. </div>
</div>
</blockquote>
<p>well, since the whole stuff around kde has got it, it won't go away as easy as corba. (which I have to deal with at work...)</p>
<p>It seems also to produce more easily portable builds, for example libical is bi-headed; its got configure for *nix, but also cmake for *nix and windows.</p>
<p>I must admit after taking the time to get that autofoo stuff figured out, I don't bother to change atm.</p>
<p>At least autofoo just requires a running shell on the build host, while cmake has to be installed, which disqualifies it for citadel.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034529</link><pubDate>Mon, 10 Oct 2011 20:45:13 +0500</pubDate><title>Message #3034529</title><guid isPermaLink="false">3034529@Uncensored</guid><description><![CDATA[ > Well the Qt world has got CMake etc. autoconf has its niceties and   
 >it's probably the right thing for some projects that want portability  

 >to a wide array of obscure archs. (And it was fun to learn, back in the
 
  
  I remember the first time around when you tried to explain it to me, and
I didn't get it then, and I don't get it now. 
  I'm glad it's one of those things that I ignored and it went away so I'll
never have to bother with it. Kinda like corba. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034527</link><pubDate>Mon, 10 Oct 2011 20:43:55 +0500</pubDate><title>Message #3034527</title><guid isPermaLink="false">3034527@Uncensored</guid><description><![CDATA[ >Heh.  Forgotten but not gone as in, new projects don't write autoconf  

 >scripts anymore -- they do build environments using GNU Automake, which
 
 >writes the autoconf scripts for you.   
 >    
 > Yes, it is once again -- "progress"   
  
 In fucking sane. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034430</link><pubDate>Mon, 10 Oct 2011 12:05:38 +0500</pubDate><title>Message #3034430</title><guid isPermaLink="false">3034430@Uncensored</guid><description><![CDATA[That's "GNU/Linux" to you, mister.  ;) 
  
 I imagine that RMS would have preferred a Jobsian-style "here is the official
GNU operating system; our software is built to run on it; other operating
systems subtract your freedom and are therefore unsupported" if he could have
pulled it off. 
  
 Instead we got autoconf, with its configuration language that only an LISP
hacker from the MIT AI lab could love.  The rest of us curse at our screens
while we count parentheses. 
  
 I suppose this discussion is reserved for dinosaurs anyway; most new developers
probably just use whatever build system their fancy-schmancy IDE generates
for them.  And for a new project that aims to be part of the mainstream pool
of open source software written in C, it's easier to just start with GNU Hello
as a template. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034428</link><pubDate>Mon, 10 Oct 2011 11:44:20 +0500</pubDate><title>Message #3034428</title><guid isPermaLink="false">3034428@Uncensored</guid><description><![CDATA[      
 Well the Qt world has got CMake etc. autoconf has its niceties and it's probably
the right thing for some projects that want portability to a wide array of
obscure archs. (And it was fun to learn, back in the day.) It also introduces
its share of complexity.     
    
  
  
 But does autoconf really scale to those big projects that become so intertwined
with outside dependencies that they're /de facto/ dependent on a specific
Linux distribution? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3034418</link><pubDate>Mon, 10 Oct 2011 11:21:38 +0500</pubDate><title>Message #3034418</title><guid isPermaLink="false">3034418@Uncensored</guid><description><![CDATA[Heh.  Forgotten but not gone as in, new projects don't write autoconf scripts
anymore -- they do build environments using GNU Automake, which writes the
autoconf scripts for you. 
  
 Yes, it is once again -- "progress" 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3033099</link><pubDate>Wed, 05 Oct 2011 11:03:08 +0500</pubDate><title>Message #3033099</title><guid isPermaLink="false">3033099@Uncensored</guid><description><![CDATA[ >  I like the way you say "was". Is it gone now?   
  
 Forgotten, but not gone. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3032922</link><pubDate>Tue, 04 Oct 2011 23:53:45 +0500</pubDate><title>Message #3032922</title><guid isPermaLink="false">3032922@Uncensored</guid><description><![CDATA[<html><body>

<p>Depends on what your definition of "was" was.   </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3032889</link><pubDate>Tue, 04 Oct 2011 21:08:51 +0500</pubDate><title>Message #3032889</title><guid isPermaLink="false">3032889@Uncensored</guid><description><![CDATA[ > Gnu autoconf was bad enough. A configuration system that only an ai   
 >hacker could love.   
  
  I like the way you say "was". Is it gone now? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3032888</link><pubDate>Tue, 04 Oct 2011 21:08:25 +0500</pubDate><title>Message #3032888</title><guid isPermaLink="false">3032888@Uncensored</guid><description><![CDATA[ >If there are logic expressions that never yield the same result on all 
 
 >databases, then you can use those expressions to detect what database  

 >the sql statement is running on!   
  
 yes, but if you have to do sql to find out what database you're running on,
one questions the sanity of the environment you're working in. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3030286</link><pubDate>Tue, 27 Sep 2011 18:21:55 +0500</pubDate><title>Message #3030286</title><guid isPermaLink="false">3030286@Uncensored</guid><description><![CDATA[  
 SQL*Autoconf? *wince* 
  
 Gnu autoconf was bad enough. A configuration system that only an ai hacker
could love. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3030271</link><pubDate>Tue, 27 Sep 2011 17:54:47 +0500</pubDate><title>Message #3030271</title><guid isPermaLink="false">3030271@Uncensored</guid><description><![CDATA[If there are logic expressions that never yield the same result on all databases,
then you can use those expressions to detect what database the sql statement
is running on! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3030210</link><pubDate>Tue, 27 Sep 2011 15:52:03 +0500</pubDate><title>Message #3030210</title><guid isPermaLink="false">3030210@Uncensored</guid><description><![CDATA[ > "and unknown" == "an unknown"   
  
 erm, actually 
  "and unknown" != "an unknown"  
  
  Just thought... I'd... you know. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3030209</link><pubDate>Tue, 27 Sep 2011 15:51:21 +0500</pubDate><title>Message #3030209</title><guid isPermaLink="false">3030209@Uncensored</guid><description><![CDATA[ > SQL takes that idea and runs with it. With scissors. All logical   
 >operations are based on 3-value logic.   
  
   My database-writing buddy told me about null in sql and how pretty much
everybody (oracle, sybase, db2, everybody) got it wrong in at least one place.
Because he did all this testing of his database against all the others and
found that there were some logic expressions that would never yield the same
result on all the databases. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3030207</link><pubDate>Tue, 27 Sep 2011 15:49:46 +0500</pubDate><title>Message #3030207</title><guid isPermaLink="false">3030207@Uncensored</guid><description><![CDATA[ >I think boost has a c++ class called a 'tribool', where it's true,  
 >false, or in a third state.   
  
 I think everybody's done that at some point. I called mine a trit. 
  True false, and unknown or not resolved yet. It's the equivalent of null,
which if you buy into the whole null thing, why can every other type be nullable
but bits can't? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3030104</link><pubDate>Tue, 27 Sep 2011 08:16:52 +0500</pubDate><title>Message #3030104</title><guid isPermaLink="false">3030104@Uncensored</guid><description><![CDATA[  
 It's not just short-circuit. (unknown or true) is also true. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029998</link><pubDate>Mon, 26 Sep 2011 23:01:21 +0500</pubDate><title>Message #3029998</title><guid isPermaLink="false">3029998@Uncensored</guid><description><![CDATA[Ah, our old friend, short circuit evaluation. 
  
 if (true or "drop database;") then print "everything is fine, just relax..."

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029989</link><pubDate>Mon, 26 Sep 2011 22:15:42 +0500</pubDate><title>Message #3029989</title><guid isPermaLink="false">3029989@Uncensored</guid><description><![CDATA[  
 "and unknown" == "an unknown" 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029988</link><pubDate>Mon, 26 Sep 2011 22:11:40 +0500</pubDate><title>Message #3029988</title><guid isPermaLink="false">3029988@Uncensored</guid><description><![CDATA[  
 SQL takes that idea and runs with it. With scissors. All logical operations
are based on 3-value logic. 
  
 Generally, any operation that involves and unknown produces an unknown. Except:

  
 (true or unknown) is true 
 (false and unknown) is false 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029976</link><pubDate>Mon, 26 Sep 2011 20:47:57 +0500</pubDate><title>Message #3029976</title><guid isPermaLink="false">3029976@Uncensored</guid><description><![CDATA[<html><body>

<p>I think boost has a c++ class called a 'tribool', where it's true, false, or in a third state.</p>
<p>I also recall creating such an object in Smalltalk while I was in college.</p>
<p>There are some good uses for something like that.  But, admittedly, not a lot of uses.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029895</link><pubDate>Mon, 26 Sep 2011 15:57:41 +0500</pubDate><title>Message #3029895</title><guid isPermaLink="false">3029895@Uncensored</guid><description><![CDATA[ > This sort of thing is not limited to Groovy. Perl, PHP, and other   
 >"scripting languages" all share similar warts. (Take a look at the   
 >truth table for PHP's == operator sometime. It's a bloody nightmare.)  

  
  http://php.net/manual/en/types.comparisons.php  
  
  That is impressive. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029737</link><pubDate>Mon, 26 Sep 2011 04:50:09 +0500</pubDate><title>Message #3029737</title><guid isPermaLink="false">3029737@Uncensored</guid><description><![CDATA[<html><body>

<p>https://wiki.fsfe.org/CloudComputing</p>
<p>Alternatives to facebook... </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3029702</link><pubDate>Sun, 25 Sep 2011 22:47:10 +0500</pubDate><title>Message #3029702</title><guid isPermaLink="false">3029702@Uncensored</guid><description><![CDATA[It's fine to have a way to express that a bool (or any other type for that
matter) is "undefined" and to have a way to test for that, but for any language
that is dealing primarily with values instead of references, there shouldn't
be varying degrees of "equal."  This is what you get from languages designed
by n00bs or as research projects.  Two values are either equal or they're
not.  Attempting to compare an undefined to anything, in any language other
than C, should throw an exception. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3027355</link><pubDate>Mon, 19 Sep 2011 22:23:42 +0500</pubDate><title>Message #3027355</title><guid isPermaLink="false">3027355@Uncensored</guid><description><![CDATA[  
 This sort of thing is not limited to Groovy. Perl, PHP, and other "scripting
languages" all share similar warts. (Take a look at the truth table for PHP's
== operator sometime. It's a bloody nightmare.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3027282</link><pubDate>Mon, 19 Sep 2011 17:43:29 +0500</pubDate><title>Message #3027282</title><guid isPermaLink="false">3027282@Uncensored</guid><description><![CDATA["special cases of truth" sounds like something that can only be parsed by
a compiler written by George Orwell.  srsly, wtf would someone want to use
an ambiguous language like that for?  Is this domain specific or just some
CS twit's idea of wankovation? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3024901</link><pubDate>Tue, 13 Sep 2011 17:18:00 +0500</pubDate><title>Message #3024901</title><guid isPermaLink="false">3024901@Uncensored</guid><description><![CDATA[  
 the greatest idiocy of all, is that the IntelliJ IDE actually gives you an
"expression can be simplified" warning when you write "foo == true", despite
the fact that the simplification doesn't have the same semantics. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3024900</link><pubDate>Tue, 13 Sep 2011 17:16:51 +0500</pubDate><title>Message #3024900</title><guid isPermaLink="false">3024900@Uncensored</guid><description><![CDATA[ >And the first test does what?  Return true if foo is defined,  
 >regardless of its value?   
  
 Not quite. Non-null object references are generally "true" by that first
test, exbut there are special cases of truth for various datatypes: non-empty
collections, strings, nonzero numbers, etc. 
  
 http://docs.codehaus.org/display/GROOVY/Groovy+Truth 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3024739</link><pubDate>Tue, 13 Sep 2011 09:02:12 +0500</pubDate><title>Message #3024739</title><guid isPermaLink="false">3024739@Uncensored</guid><description><![CDATA[<html><body>

<p>exactly.</p>
<p>works great for php.</p>
<p>kinda like the "isset" value.</p>
<p><span style="font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', Monaco, 'Courier New', Courier, monospace; font-size: 14px; background-color: #e1e1e1;"><span style="color: #007700;">if (isset(</span><span style="color: #0000bb;">$foo</span><span style="color: #007700;">)) {<br /> echo </span><span style="color: #dd0000;">"This var is set so I will print."</span><span style="color: #007700;">;<br />}</span></span></p>
<p>like if someone does like somephpfile.php?foo=1 then it'll follow the option that foo set. if it's undefined by a post value, then it'll ring in as false and skip that if or isset statement and move on to the next options.</p>
<p>and you can expand that further by adding cases or additional if's in there like</p>
<p><span style="font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', Monaco, 'Courier New', Courier, monospace; font-size: 14px; background-color: #e1e1e1;"><span style="color: #007700;">if (isset(</span><span style="color: #0000bb;">$foo</span><span style="color: #007700;">)) {<br /></span></span><span style="font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', Monaco, 'Courier New', Courier, monospace; font-size: 14px; background-color: #e1e1e1;"><span style="color: #007700;">if (</span></span><span style="color: #0000bb; font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', Monaco, 'Courier New', Courier, monospace; font-size: 14px; background-color: #e1e1e1;">$foo</span><span style="font-family: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', Monaco, 'Courier New', Courier, monospace; font-size: 14px; background-color: #e1e1e1;"><span style="color: #007700;">==1</span><span style="color: #007700;">) {<br /> echo </span><span s
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3024702</link><pubDate>Tue, 13 Sep 2011 07:35:30 +0500</pubDate><title>Message #3024702</title><guid isPermaLink="false">3024702@Uncensored</guid><description><![CDATA[<html><body>

<blockquote>
<div class="message_content">
<div class="fmout-JUSTIFY"><span style="color: #000000;"><br /></span>Meh, gotta love/hate dynamic languages like Groovy.  <br /><br />if (foo)  <br /><br />does not necessarily mean the same thing as:  <br /><br />if (foo == true)  <br /><br />!</div>
</div>
</blockquote>
<p>And the first test does what?  Return true if foo is defined, regardless of its value?</p>
<p>I suppose it's nice to have such a thing as "undefined" (but we can use null pointers for that too)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3023354</link><pubDate>Sat, 10 Sep 2011 05:59:12 +0500</pubDate><title>Message #3023354</title><guid isPermaLink="false">3023354@Uncensored</guid><description><![CDATA[<html><body>

<p>oh, cool you can switch it to dvorak on the original site..</p>
<p>http://www.patrick-wied.at/projects/heatmap-keyboard/</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3023068</link><pubDate>Fri, 09 Sep 2011 16:19:41 +0500</pubDate><title>Message #3023068</title><guid isPermaLink="false">3023068@Uncensored</guid><description><![CDATA[<html><body>

<p>Most Pressed Keys and Programming Syntaxes</p>
<p>http://www.mahdiyusuf.com/post/9947002105/most-pressed-keys-and-programming-syntaxes</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022924</link><pubDate>Fri, 09 Sep 2011 12:08:43 +0500</pubDate><title>Message #3022924</title><guid isPermaLink="false">3022924@Uncensored</guid><description><![CDATA[ >yea. better use ant. *yak*  
  
  I dunno my machine nowadays is so fast  I can do a complete build every
time and it's still quick. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022577</link><pubDate>Thu, 08 Sep 2011 19:16:08 +0500</pubDate><title>Message #3022577</title><guid isPermaLink="false">3022577@Uncensored</guid><description><![CDATA[  
 Meh, gotta love/hate dynamic languages like Groovy. 
  
 if (foo) 
  
 does not necessarily mean the same thing as: 
  
 if (foo == true) 
  
 ! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022541</link><pubDate>Thu, 08 Sep 2011 17:15:53 +0500</pubDate><title>Message #3022541</title><guid isPermaLink="false">3022541@Uncensored</guid><description><![CDATA[  
 mvn > ant 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022436</link><pubDate>Thu, 08 Sep 2011 12:22:35 +0500</pubDate><title>Message #3022436</title><guid isPermaLink="false">3022436@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Thu Sep 08 2011 11:54:14 EDT</span> <span>from   Ford II @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">good reason not to use dependancy files. :-)</div>
</div>
</blockquote>
<p>yea. better use ant. *yak*</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022429</link><pubDate>Thu, 08 Sep 2011 11:54:14 +0500</pubDate><title>Message #3022429</title><guid isPermaLink="false">3022429@Uncensored</guid><description><![CDATA[ good reason not to use dependancy files. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022386</link><pubDate>Thu, 08 Sep 2011 09:19:49 +0500</pubDate><title>Message #3022386</title><guid isPermaLink="false">3022386@Uncensored</guid><description><![CDATA[<html><body>

<p>lessons learned today:</p>
<p>if you move a header file around, and don't clean up the dependency files, make aborts beforehand compiling the .c files referencing it without any errormessage.</p>
<p>took me around 2 hours to find out.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022170</link><pubDate>Wed, 07 Sep 2011 20:19:44 +0500</pubDate><title>Message #3022170</title><guid isPermaLink="false">3022170@Uncensored</guid><description><![CDATA[ >http://railslove.com/weblog/2011/09/05/json-schema-baby/   
  
 json-douche-bag 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022088</link><pubDate>Wed, 07 Sep 2011 16:55:44 +0500</pubDate><title>Message #3022088</title><guid isPermaLink="false">3022088@Uncensored</guid><description><![CDATA[  
 Seems to make non-standard use of JSON, adding type metadata to every object,
turning JSON into something more like XML. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3022080</link><pubDate>Wed, 07 Sep 2011 16:22:03 +0500</pubDate><title>Message #3022080</title><guid isPermaLink="false">3022080@Uncensored</guid><description><![CDATA[<html><body>

<p>http://railslove.com/weblog/2011/09/05/json-schema-baby/</p>
<p>hm.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017913</link><pubDate>Mon, 29 Aug 2011 20:40:55 +0500</pubDate><title>Message #3017913</title><guid isPermaLink="false">3017913@Uncensored</guid><description><![CDATA[ > <+1> :) exactly. I compiled it and ran debug. It's exactly as you  
 >state. It treats the printf(); as its own block before continuing to  
 >the return 0, even with the {} missing  
  
 Right!  This is no wimpy-ass Python compiler where it pays attention to the
indents! 
  
 <grin> 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017786</link><pubDate>Mon, 29 Aug 2011 14:02:38 +0500</pubDate><title>Message #3017786</title><guid isPermaLink="false">3017786@Uncensored</guid><description><![CDATA[<html><body>

<p>now this is cool:</p>
<p>http://blog.holdenkarau.com/</p>
<p>a bot that spiders github, and searches for spelling mistakes, clones the project in which he finds some, and sends a push request to the owner...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017741</link><pubDate>Mon, 29 Aug 2011 12:49:56 +0500</pubDate><title>Message #3017741</title><guid isPermaLink="false">3017741@Uncensored</guid><description><![CDATA[welcome to c. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017737</link><pubDate>Mon, 29 Aug 2011 12:45:42 +0500</pubDate><title>Message #3017737</title><guid isPermaLink="false">3017737@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Fri Aug 26 2011 10:40:58 PM EDT</span> <span>from   fleeb @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />Actually, CrazyEddy, it won't.  You'll get 500 lines as expected.  <br /><br /><strong>The whole printf(); statement is regarded as a 'block' following the for() statement, because the for() statement didn't open a block with the '{' character (or close it with the '}' character). </strong> <br /><br />Compile it for yourself and see.</div>
</div>
</blockquote>
<p><br /> &lt;+1&gt; :) exactly. I compiled it and ran debug. It's exactly as you state. It treats the printf(); as its own block before continuing to the return 0, even with the {} missing</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017664</link><pubDate>Mon, 29 Aug 2011 10:22:27 +0500</pubDate><title>Message #3017664</title><guid isPermaLink="false">3017664@Uncensored</guid><description><![CDATA[srsly?  At this point anyone who doesn't have those characters available shouldn't
be writing code. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017259</link><pubDate>Sat, 27 Aug 2011 22:19:07 +0500</pubDate><title>Message #3017259</title><guid isPermaLink="false">3017259@Uncensored</guid><description><![CDATA[  
 Oh, yeah, I've avoided those like the plague.  Great if you want to do obfuscated
tricks. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3017107</link><pubDate>Sat, 27 Aug 2011 13:45:43 +0500</pubDate><title>Message #3017107</title><guid isPermaLink="false">3017107@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, so I've learned about di &amp; trigraphs today:</p>
<p>https://secure.wikimedia.org/wikipedia/en/wiki/Digraphs_and_trigraphs#C</p>
<p>guess I will never use them.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3016903</link><pubDate>Fri, 26 Aug 2011 22:40:58 +0500</pubDate><title>Message #3016903</title><guid isPermaLink="false">3016903@Uncensored</guid><description><![CDATA[  
 Actually, CrazyEddy, it won't.  You'll get 500 lines as expected. 
  
 The whole printf(); statement is regarded as a 'block' following the for()
statement, because the for() statement didn't open a block with the '{' character
(or close it with the '}' character). 
  
 Compile it for yourself and see. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3016729</link><pubDate>Fri, 26 Aug 2011 13:15:24 +0500</pubDate><title>Message #3016729</title><guid isPermaLink="false">3016729@Uncensored</guid><description><![CDATA[for(count=1;count<=500;count++) 
printf("I will check my code jokes before posting.\n"); 
return 0; 
}  

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3016188</link><pubDate>Thu, 25 Aug 2011 09:41:41 +0500</pubDate><title>Message #3016188</title><guid isPermaLink="false">3016188@Uncensored</guid><description><![CDATA[<html><body>

<p>Looking back on that, I have a habit of overcomplicating things huh?</p>
<p>I scrapped it and just placed a .htaccess in the /admincp/ directory that only allows my ip address, and a select few others, and 403's everyone elses...</p>
<p>should have done that from the beginning...</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3015781</link><pubDate>Wed, 24 Aug 2011 12:30:13 +0500</pubDate><title>Message #3015781</title><guid isPermaLink="false">3015781@Uncensored</guid><description><![CDATA[<html><body>

<p>"<span style="font-family: 'Times New Roman'; background-color: #c0c0c0; font-size: medium;">Real programs don't eat cache."</span></p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3015754</link><pubDate>Wed, 24 Aug 2011 11:09:41 +0500</pubDate><title>Message #3015754</title><guid isPermaLink="false">3015754@Uncensored</guid><description><![CDATA[<html><body>

<p>got it to, er.. work i guess.</p>
<p>Had to hook it a back-handed way since vBulletin does output buffering, you can't actually do an include() to a flat file, you have to find just the right plugin, hook spot, and code to get anything custom to show up.</p>
<p>I ended up making a custom plugin that detects if someone tries to log into the admin panel using one of the admin accounts, but fails. It then shows the to-be-hacker a message saying they'll be banned shortly, sends me an e-mail that has his IP address and other information, posts the IP and exact local timestamp to a log file, then waits for me to ban the person.</p>
<p>Working like a back-handed, slightly backwards, and half-assed charm :)</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3015212</link><pubDate>Tue, 23 Aug 2011 11:37:57 +0500</pubDate><title>Message #3015212</title><guid isPermaLink="false">3015212@Uncensored</guid><description><![CDATA[<html><body>

<p>so... i got a script working that creates a line in a .log file every time it's accessed.... now i just have to find where in the massive amount of .php files in the admincp area of vbulletin to incorporate it... here's the code and file location..</p>
<p>CODE:</p>
<p>&lt;?php<br /> //define file name<br /> $filename = './accesslog.log';<br /> //save IP address to variable<br /> if ($_SERVER['HTTP_CLIENT_IP'])<br /> $visitorIP = $_SERVER['HTTP_CLIENT_IP'];<br /> if ($_SERVER['HTTP_X_FORWARDED'])<br /> $visitorIP = $_SERVER['HTTP_X_FORWARDED'];<br /> if ($_SERVER['HTTP_X_FORWARDED_FOR']) // when behind proxy<br /> $visitorIP = $_SERVER['HTTP_X_FORWARDED_FOR'];<br /> $visitorIP = $_SERVER['REMOTE_ADDR'];<br /> //save access date and time to variable<br /> $today = date("F j, Y, g:i a"); <br /> $content = $visitorIP . " , " . $today . "\n";<br /> // Let's make sure the file exists and is writable first.<br /> if (is_writable($filename)) {<br /> // In our example we're opening $filename in append mode.<br /> // The file pointer is at the bottom of the file hence<br /> // that's where $somecontent will go when we fwrite() it.<br /> if (!$handle = fopen($filename, 'a')) {<br /> echo "Cannot open file ($filename)";<br /> exit;<br /> }<br /> // Write $somecontent to our opened
<p> </p>
<p>File: http://forum.muvalhalla.com/admincp/acpaccess.php</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3015160</link><pubDate>Tue, 23 Aug 2011 10:18:00 +0500</pubDate><title>Message #3015160</title><guid isPermaLink="false">3015160@Uncensored</guid><description><![CDATA[<html><body>

<p>arg. im losing my mind trying to make a custom log file.</p>
<p>So, I'm running vBulletin 4.1.0 on one of my web servers and recently i've caught people on my admin panel that weren't supposed to be on there.</p>
<p>I want to log ALL access to ./admincp directory to a file that I can monitor elsewhere on my server.</p>
<p>I also want this to be either .htaccess or .php based...</p>
<p>Ideas?</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3014624</link><pubDate>Mon, 22 Aug 2011 09:28:25 +0500</pubDate><title>Message #3014624</title><guid isPermaLink="false">3014624@Uncensored</guid><description><![CDATA[<html><body>

<p>*roflamao*</p>
<p>http://www.addedbytes.com/blog/if-php-were-british/</p>
<p>now... wheres davew? ;-)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3014077</link><pubDate>Sat, 20 Aug 2011 20:17:15 +0500</pubDate><title>Message #3014077</title><guid isPermaLink="false">3014077@Uncensored</guid><description><![CDATA[  
 I loathe setup. 
  
 But then, I have a history with it that sorta gives me reason to hate it.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013633</link><pubDate>Fri, 19 Aug 2011 16:59:52 +0500</pubDate><title>Message #3013633</title><guid isPermaLink="false">3013633@Uncensored</guid><description><![CDATA[ I find that screwing around with setup and software and reconfiguring things
is a lot of fun when you don't spend all that time feeling guilty that you
should better be using your powers to accomplish some programming task.  

    
 But I've gotten over that guilt and now I like repartitioning drives and
trying things out in VMs.   
  
  
  But I still do so hate it when my hard drive dies. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013631</link><pubDate>Fri, 19 Aug 2011 16:58:15 +0500</pubDate><title>Message #3013631</title><guid isPermaLink="false">3013631@Uncensored</guid><description><![CDATA[ >not likely... this was in my high-school C++ class....   
  
 ....yeah... and...? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013613</link><pubDate>Fri, 19 Aug 2011 16:18:51 +0500</pubDate><title>Message #3013613</title><guid isPermaLink="false">3013613@Uncensored</guid><description><![CDATA[<html><body>

<p>good one :)</p>
<p>I actually sucked at programming of any kind in those days, I was barely starting to use computers for more than just photo editing and word processing.</p>
<p>Nowdays, I'm doing good to figure out and manipulate someon elses' code... I can barely get beyond Hello World when writing my own.</p>
<p>Thus why my chosen career path is technical drafting. CAD/CAM systems are my favorite thing to mess with and that's how I get paid, and what I went to school for... but that's for a different topic. ;)</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013598</link><pubDate>Fri, 19 Aug 2011 15:28:27 +0500</pubDate><title>Message #3013598</title><guid isPermaLink="false">3013598@Uncensored</guid><description><![CDATA[If you got a C++ in the class then perhaps programming would not be a good
career choice for you. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013487</link><pubDate>Fri, 19 Aug 2011 12:40:18 +0500</pubDate><title>Message #3013487</title><guid isPermaLink="false">3013487@Uncensored</guid><description><![CDATA[<html><body>

<p>not likely... this was in my high-school C++ class....</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013414</link><pubDate>Fri, 19 Aug 2011 09:50:11 +0500</pubDate><title>Message #3013414</title><guid isPermaLink="false">3013414@Uncensored</guid><description><![CDATA[That sounds fishy to me.  I'll bet there was someone in that organization
who really thought that "stdio" was a misspelling of "studio" rather than
an abbreviation of "STanDard Input/Output" and created an alias for it, then
came up with a lame explanation for it later. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013069</link><pubDate>Thu, 18 Aug 2011 16:06:56 +0500</pubDate><title>Message #3013069</title><guid isPermaLink="false">3013069@Uncensored</guid><description><![CDATA[<html><body>

<p>even better... the foxtrot comic has &lt;stdio.h&gt; where as i typed &lt;studio.h&gt;...  another for off-by-one....</p>
<p>I either misstyped it or flashed back to my old days.</p>
<p>I looked through some old programming notes and my teacher wrote why we used studio. we ran a virtualized "studio" that handled the IO for the programs we wrote, just in case someone tried to write something malicious, so the headers were always studio.... interesting how one letter can mean a world of difference.</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3013023</link><pubDate>Thu, 18 Aug 2011 14:03:32 +0500</pubDate><title>Message #3013023</title><guid isPermaLink="false">3013023@Uncensored</guid><description><![CDATA[  
 Heh.. must have been a custom header.  Normally, you'd include <stdio.h>
if you wanted to write to standard i/o. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012862</link><pubDate>Thu, 18 Aug 2011 08:46:38 +0500</pubDate><title>Message #3012862</title><guid isPermaLink="false">3012862@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><strong><br /></strong></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />... but I doubt there's any such header file as &lt;studio.h&gt;</div>
</div>
</blockquote>
<p> </p>
<p>We actually used &lt;studio.h&gt; when I was programming C++ in high-school. I didn't fully understand programming at the time, so I knew absolutely nothing of that header's function. I was required to put it on all of my assignments and programs though...</p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012586</link><pubDate>Wed, 17 Aug 2011 23:03:59 +0500</pubDate><title>Message #3012586</title><guid isPermaLink="false">3012586@Uncensored</guid><description><![CDATA[ >and i think i forgot a semicolon in there somewhere... Spot the  
 >Mistake, Round 2!  
  
 There aren't any missing semicolons ... 
  
 ... but I doubt there's any such header file as <studio.h> 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012427</link><pubDate>Wed, 17 Aug 2011 14:39:20 +0500</pubDate><title>Message #3012427</title><guid isPermaLink="false">3012427@Uncensored</guid><description><![CDATA[<html><body>

<p>the "Foxtrot" comic strip did one similar to my previous coding joke... that's where I got the idea.</p>
<p><a href="http://cdn.svcs.c2.uclick.com/c2/efe56a705e32012ee3bf00163e41dd5b">http://cdn.svcs.c2.uclick.com/c2/efe56a705e32012ee3bf00163e41dd5b</a> --or-- http://bit.ly/qU3CvM</p>
<p> </p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012374</link><pubDate>Wed, 17 Aug 2011 11:27:29 +0500</pubDate><title>Message #3012374</title><guid isPermaLink="false">3012374@Uncensored</guid><description><![CDATA[  
 skpacman: 
  
 That last bit looked right to me.  I haven't tried compiling it, but it looks
correct. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012367</link><pubDate>Wed, 17 Aug 2011 11:10:07 +0500</pubDate><title>Message #3012367</title><guid isPermaLink="false">3012367@Uncensored</guid><description><![CDATA[Ugh.. When I see '?' in code I still think Print.. Wow...  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012332</link><pubDate>Wed, 17 Aug 2011 08:59:59 +0500</pubDate><title>Message #3012332</title><guid isPermaLink="false">3012332@Uncensored</guid><description><![CDATA[<html><body>

<p>and i think i forgot a semicolon in there somewhere... Spot the Mistake, Round 2!</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012330</link><pubDate>Wed, 17 Aug 2011 08:59:10 +0500</pubDate><title>Message #3012330</title><guid isPermaLink="false">3012330@Uncensored</guid><description><![CDATA[<html><body>

<p>yet another one of my punny programming jokes corrected by someone who knows better than me...</p>
<p> </p>
<p>
<p>#include &lt;studio.h&gt;</p>
<p>int main(void)</p>
<p>{</p>
<p>int count;</p>
<p>for(count=1;count&lt;=500;count++)</p>
<p>printf("I will check my code jokes before posting.\n");</p>
<p>return 0;</p>
<p>}</p>
</p>
<p> </p>
<p>-- <br />Stephen D King<br />skpacman8629@gmail.com</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012144</link><pubDate>Tue, 16 Aug 2011 23:03:01 +0500</pubDate><title>Message #3012144</title><guid isPermaLink="false">3012144@Uncensored</guid><description><![CDATA[  
 10 ? HOME 
 20 ? SWEET 
 30 GOTO 10 
  
 That should work better. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012115</link><pubDate>Tue, 16 Aug 2011 20:23:41 +0500</pubDate><title>Message #3012115</title><guid isPermaLink="false">3012115@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Tue Aug 16 2011 16:10:00 EDT</span> <span>from   skpacman @ Uncensored </span></div>
<div class="message_content">
<p>10 HOME<br />20 SWEET<br />30 GOTO 10</p>
<br /><br /></div>
</blockquote>
<p>]RUN</p>
<p>]SYNTAX ERROR IN 10</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3012055</link><pubDate>Tue, 16 Aug 2011 16:10:00 +0500</pubDate><title>Message #3012055</title><guid isPermaLink="false">3012055@Uncensored</guid><description><![CDATA[<html><body>

<p>10 HOME<br />20 SWEET<br />30 GOTO 10</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011911</link><pubDate>Tue, 16 Aug 2011 10:41:20 +0500</pubDate><title>Message #3011911</title><guid isPermaLink="false">3011911@Uncensored</guid><description><![CDATA[ it already exists, it's called while(1) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011900</link><pubDate>Tue, 16 Aug 2011 09:55:23 +0500</pubDate><title>Message #3011900</title><guid isPermaLink="false">3011900@Uncensored</guid><description><![CDATA[I love GOTO 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011826</link><pubDate>Mon, 15 Aug 2011 22:06:34 +0500</pubDate><title>Message #3011826</title><guid isPermaLink="false">3011826@Uncensored</guid><description><![CDATA[ > Random jumps of program flow are sensible in ANY context! >:)   
  
 We shall witness the triumphant return of the GOTO statement!!!!!1 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011771</link><pubDate>Mon, 15 Aug 2011 15:06:36 +0500</pubDate><title>Message #3011771</title><guid isPermaLink="false">3011771@Uncensored</guid><description><![CDATA[  
 Or just use pointers.  Heh. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011754</link><pubDate>Mon, 15 Aug 2011 13:50:16 +0500</pubDate><title>Message #3011754</title><guid isPermaLink="false">3011754@Uncensored</guid><description><![CDATA[ >reassigned, so if there is some dynamic allocation hidden inside the   
 >class, there needs to be an operator== that handles the reassignment   
 >sanely.     
  
 ahhh, it's alll coming back now... you're right, the way you make that work
is by handling the operator=  overload (that's what you meant right? not operator==)
correctly. 
  So you CAN make it work right, but you have to handle all the assignment
cases. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011753</link><pubDate>Mon, 15 Aug 2011 13:48:18 +0500</pubDate><title>Message #3011753</title><guid isPermaLink="false">3011753@Uncensored</guid><description><![CDATA[ > The drummer for your rimshot was carried away by an exception.   
  
 SEEE!??!?!? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011752</link><pubDate>Mon, 15 Aug 2011 13:48:06 +0500</pubDate><title>Message #3011752</title><guid isPermaLink="false">3011752@Uncensored</guid><description><![CDATA[ > Random jumps of program flow are sensible in ANY context! >:)   
  
 NO! You can't say that! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011703</link><pubDate>Mon, 15 Aug 2011 11:19:26 +0500</pubDate><title>Message #3011703</title><guid isPermaLink="false">3011703@Uncensored</guid><description><![CDATA[    
 the variable named foo is constructed once and copied once, and finally destructed
when the frame goes out of scope. The temporary object is constructed, copied
to foo, and immediately destructed. The previous value assigned to foo is
*not* destructed before being reassigned, so if there is some dynamic allocation
hidden inside the class, there needs to be an operator== that handles the
reassignment sanely.   
    
 I don't know what the heck you would do if there was a derived class, so
it seems that reass'ing a variable by value in C++ is something that should
be avoided in the general case.   
  
  
 It was an honest question because I haven't used C++ in years and somebody
was asking me something related, for which I didn't have a concise answer
off the top of my head. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011700</link><pubDate>Mon, 15 Aug 2011 11:15:39 +0500</pubDate><title>Message #3011700</title><guid isPermaLink="false">3011700@Uncensored</guid><description><![CDATA[  
 The drummer for your rimshot was carried away by an exception. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011695</link><pubDate>Mon, 15 Aug 2011 11:11:51 +0500</pubDate><title>Message #3011695</title><guid isPermaLink="false">3011695@Uncensored</guid><description><![CDATA[ >  There is no way you can tell me that random jumps of program flow is 
 
 >sensible in any context.   
  
 Random jumps of program flow are sensible in ANY context! >:) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011688</link><pubDate>Mon, 15 Aug 2011 10:58:48 +0500</pubDate><title>Message #3011688</title><guid isPermaLink="false">3011688@Uncensored</guid><description><![CDATA[  
 You're just used to using the heap.  All the cool kids use the stack now.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011643</link><pubDate>Mon, 15 Aug 2011 09:39:28 +0500</pubDate><title>Message #3011643</title><guid isPermaLink="false">3011643@Uncensored</guid><description><![CDATA[ I am old. I'm going to fail my next interview. I'm going to have to write
java for the rest of my life. Sigh. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011642</link><pubDate>Mon, 15 Aug 2011 09:37:50 +0500</pubDate><title>Message #3011642</title><guid isPermaLink="false">3011642@Uncensored</guid><description><![CDATA[ Ah ha! You were testing me, I am old, and I got it wrong. I totally misread
your example. I saw an implicit 'new' in there where you didn't actually have
one. 
   So lets see, as fleeb says it a temporary object is made, but it is still
orphaned because the temporary object gets lost. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011639</link><pubDate>Mon, 15 Aug 2011 09:34:19 +0500</pubDate><title>Message #3011639</title><guid isPermaLink="false">3011639@Uncensored</guid><description><![CDATA[ > /* stack variable */ foo = Bar(x, y, z) // constructor invocation   
 > immediately followed by:   
 > foo = Bar(z, y, x)   
  
 You're asking us? I thought you knew this stuff better than me. Or are you
getting old and rusty too? :-) 
  
  No the destructor of the first object would not be called because it's being
orphaned, but it still exists. 
   
 Or were you just testing us? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011638</link><pubDate>Mon, 15 Aug 2011 09:32:57 +0500</pubDate><title>Message #3011638</title><guid isPermaLink="false">3011638@Uncensored</guid><description><![CDATA[ > But it's very damning to interrupt the flow of a program with an   
 >exception for something as frivolous as, say, a missing file in the   
  
 yup. or converting a string to an integer and it's not an integer. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011637</link><pubDate>Mon, 15 Aug 2011 09:32:13 +0500</pubDate><title>Message #3011637</title><guid isPermaLink="false">3011637@Uncensored</guid><description><![CDATA[ >error condition?  Sure, you could use pass-by-reference to return   
 >either your value or the error conditions, but that can get messy.  In 
 
 >this scenario, exceptions can provide a somewhat more sensible   
 >solution.   
  
 Nope. Return value is always success or failure, and return values are passed
by value. Nowadays  I have an object I call Ret. null on success, instance
of Ret if failure with lots of failure details inside it. Return data is passed
by reference in a parameter to the function. 
  There is no way you can tell me that random jumps of program flow is sensible
in any context. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011456</link><pubDate>Sun, 14 Aug 2011 12:12:37 +0500</pubDate><title>Message #3011456</title><guid isPermaLink="false">3011456@Uncensored</guid><description><![CDATA[  
 That's the answer I expected.  "Maybe". 
  
 I had an amusing bug where I created a class whose creation logged that such-and-so
started, and whose destructor logged that such-and-so ended, and I accidentally
used this class like this: 
  
 ScopedLog( logLevel, "NameOfFunction" ); 
  
 I was supposed to use it like this: 
  
 ScopedLog myLog( logLevel, "NameOfFunction" ); 
  
 The previous way created a temporary object that disappeared immediately,
so it always looked like nothing happened within the function ('cause the
logging suggested that the function had finished when it hadn't even started).

  
 I realize this case is rather different from yours, but it seems related,
thanks to the whole temporary object thing. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011390</link><pubDate>Sat, 13 Aug 2011 23:49:52 +0500</pubDate><title>Message #3011390</title><guid isPermaLink="false">3011390@Uncensored</guid><description><![CDATA[stackoverflow to the rescue,

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011381</link><pubDate>Sat, 13 Aug 2011 22:56:57 +0500</pubDate><title>Message #3011381</title><guid isPermaLink="false">3011381@Uncensored</guid><description><![CDATA[  
 C++ Q: 
  
 In general, if you do this: 
  
 /* stack variable */ foo = Bar(x, y, z) // constructor invocation 
 immediately followed by: 
 foo = Bar(z, y, x) 
  
 will destructors be invoked? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011191</link><pubDate>Fri, 12 Aug 2011 20:48:40 +0500</pubDate><title>Message #3011191</title><guid isPermaLink="false">3011191@Uncensored</guid><description><![CDATA[  
 Well, you have a couple of ways to do this, depending on your preferences,
I guess. 
  
 You can do the pass-by-reference (or pass-by-pointer) thing to set an error
code, as you mentioned. 
  
 Or, maybe, you can return a tuple, with one part of the tuple serving as
the error code, and the other is the actual return value. 
  
 But it's very damning to interrupt the flow of a program with an exception
for something as frivolous as, say, a missing file in the file system, when
an error code would provide the nicer solution.  Having to think about try/catch
nonsense is frankly annoying. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011161</link><pubDate>Fri, 12 Aug 2011 18:41:01 +0500</pubDate><title>Message #3011161</title><guid isPermaLink="false">3011161@Uncensored</guid><description><![CDATA[ Playing Devil's advocate here... 
  
 Returning error codes works when the type system supports it, or the domain
of returned values from your function allows for certain values to be considered
invalid, and this reusable as error codes.  However, if your function, for
example, returns an integer value, and that value could be anywhere in the
valid integer range, how do you signal an error condition?  Sure, you could
use pass-by-reference to return either your value or the error conditions,
but that can get messy.  In this scenario, exceptions can provide a somewhat
more sensible solution. 
  
 Personally, I like the idea of leveraging the type system to signal error
conditions.  A type definition that lets the function return either a normal
value, or an error code does away with the need for exceptions, and makes
it clear that the caller needs to deal with it properly. 
   Error Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011151</link><pubDate>Fri, 12 Aug 2011 17:27:39 +0500</pubDate><title>Message #3011151</title><guid isPermaLink="false">3011151@Uncensored</guid><description><![CDATA[ > I've been doing fairly well returning error codes and the like.   
  
 thank you. Like normal people. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011143</link><pubDate>Fri, 12 Aug 2011 17:11:11 +0500</pubDate><title>Message #3011143</title><guid isPermaLink="false">3011143@Uncensored</guid><description><![CDATA[  
 Yeah, I'm not a fan of exceptions. 
  
 I've been doing fairly well returning error codes and the like. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3011007</link><pubDate>Fri, 12 Aug 2011 12:41:26 +0500</pubDate><title>Message #3011007</title><guid isPermaLink="false">3011007@Uncensored</guid><description><![CDATA[ >no, I tihnk...  
  
 I particularly like that this is #1: 
   
  1) the whole C++ exception handling thing is fundamentally broken.  
   
  I've been screaming this at people for over 10 years now, funny that linus
agrees with me. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3010958</link><pubDate>Fri, 12 Aug 2011 08:57:58 +0500</pubDate><title>Message #3010958</title><guid isPermaLink="false">3010958@Uncensored</guid><description><![CDATA[ >http://kerneltrap.org/node/2067   
  
 Wherein Richard B. Johnson spouts off like the *hole that he is. Doesn't
this guy *ever* shut up? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3010955</link><pubDate>Fri, 12 Aug 2011 08:45:41 +0500</pubDate><title>Message #3010955</title><guid isPermaLink="false">3010955@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Fr Aug 12 2011 08:30:58 EDT</span> <span>von   dothebart @ Uncensored </span></div>
<div class="message_content">
<p> </p>
<blockquote>
<div class="message_header"><span>Fr Aug 12 2011 08:26:26 EDT</span> <span>von   dothebart @ Uncensored </span></div>
<div class="message_content">
<p>WHUT?</p>
<br /><br /></div>
</blockquote>
<p><a href="http://kerneltrap.org/node/2067" target="webcit01">http://kerneltrap.org/node/2067</a></p>
<p>no, I tihnk...</p>
<br /><br /></div>
</blockquote>
<p>oh, and I especialy like...</p>
<blockquote>
<p>"The fact is, C++ compilers are not trustworthy. They were even worse in<br /> 1992, but some fundamental facts haven't changed: 1) the whole C++  exception handling thing is fundamentally broken. It's _especially_  broken for kernels. 2) any compiler or language that likes to hide  things like memory allocations behind your back just isn't a good choice  for a kernel.<strong><em> 3) you can write object-oriented code (useful for  filesystems etc) in C, _without_ the crap that is C++."</em></strong></p>
<p> </p>
</blockquote>
<p>point 3, since we're exactly  doing much of that with citadel these days.</p>
<p>We emulate some more of the c++ features:</p>
<p>- static constructors &amp; objects by shellscripts autogenerating code</p>
<p>-  automatic destruction by callback functions when handing objects (pointers to complex arrays) into lists</p>
<p>we don't have</p>
<p>- polymorphic functions, which I like, but one can circumvent them by naming consequently, and cleaning up types, plus some macros adapting types (HKEY, SKEY,...)</p>
<p>- operator overloading - which I realy hate, because of it makes it impossible to see the complexity of a simple line of code and makes profiling a nightmare</p>
<p>- templating, which in some cases can be done by casts, but I don't like it that much anyways.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3010953</link><pubDate>Fri, 12 Aug 2011 08:30:58 +0500</pubDate><title>Message #3010953</title><guid isPermaLink="false">3010953@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Fr Aug 12 2011 08:26:26 EDT</span> <span>von   dothebart @ Uncensored </span></div>
<div class="message_content">
<p>WHUT?</p>
<br /><br /></div>
</blockquote>
<p>http://kerneltrap.org/node/2067</p>
<p>no, I tihnk...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3010950</link><pubDate>Fri, 12 Aug 2011 08:26:26 +0500</pubDate><title>Message #3010950</title><guid isPermaLink="false">3010950@Uncensored</guid><description><![CDATA[<html><body>

<p>WHUT?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3010941</link><pubDate>Fri, 12 Aug 2011 07:46:34 +0500</pubDate><title>Message #3010941</title><guid isPermaLink="false">3010941@Uncensored</guid><description><![CDATA[  
 Huh... that's interesting. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3010844</link><pubDate>Thu, 11 Aug 2011 23:15:55 +0500</pubDate><title>Message #3010844</title><guid isPermaLink="false">3010844@Uncensored</guid><description><![CDATA[Don't look now, but I believe Linus has made the decision to allow C++ in
the kernel. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007806</link><pubDate>Wed, 03 Aug 2011 21:17:04 +0500</pubDate><title>Message #3007806</title><guid isPermaLink="false">3007806@Uncensored</guid><description><![CDATA[ >I don't think the average modern C programm looks the same way as  
 >they did 20 years ago.  
  
  I marveled at some of the complete shit that got through a (pre-ANSI) C
compiler, but then  I look at the linux kernel source and I think maybe that
stuff wasn't so bad after all. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007804</link><pubDate>Wed, 03 Aug 2011 21:15:38 +0500</pubDate><title>Message #3007804</title><guid isPermaLink="false">3007804@Uncensored</guid><description><![CDATA[ > Farther along in our insanity, anyway. fa la ba la mo pa ra ka...   
  
 Don't tell me you've sold out TOO! I had such high hopes for you. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007526</link><pubDate>Wed, 03 Aug 2011 09:06:14 +0500</pubDate><title>Message #3007526</title><guid isPermaLink="false">3007526@Uncensored</guid><description><![CDATA[<html><body>

<p>over the years more and more programming techniques, which were developed with other languages, have also become common ground in C.</p>
<p>I don't think the average modern C programm looks the same way as they did 20 years ago.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007375</link><pubDate>Tue, 02 Aug 2011 15:49:40 +0500</pubDate><title>Message #3007375</title><guid isPermaLink="false">3007375@Uncensored</guid><description><![CDATA[ To pull something you oft quote, IG, "The right tool for the job." 
  
 C is still a very useful and powerful language, and it shines in a number
of areas.  However, there are some things that C doesn't do well, and that's
where other languages come into play. 
  
 For me, I like to at least have a passing understanding of what can be done
with those other languages.  That way, I'm at least aware of the options available
to me when I start a new programming task. 
   Language Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007283</link><pubDate>Tue, 02 Aug 2011 09:44:13 +0500</pubDate><title>Message #3007283</title><guid isPermaLink="false">3007283@Uncensored</guid><description><![CDATA[I think that would count as a "domain specific language" which opens up a
whole new can of worms.  :) 
  
 I guess I'll just have to resign myself to being a dinosaur, still thinking
that C is cool after all these decades... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007191</link><pubDate>Tue, 02 Aug 2011 02:08:57 +0500</pubDate><title>Message #3007191</title><guid isPermaLink="false">3007191@Uncensored</guid><description><![CDATA[What about LabVIEW adn the graphical programming languages!

(in Texas right now for NatInst's "NI Week" - Lots of LabVIEW and data 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007125</link><pubDate>Mon, 01 Aug 2011 22:25:01 +0500</pubDate><title>Message #3007125</title><guid isPermaLink="false">3007125@Uncensored</guid><description><![CDATA[  
 Farther along in our insanity, anyway. fa la ba la mo pa ra ka... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3007110</link><pubDate>Mon, 01 Aug 2011 21:22:26 +0500</pubDate><title>Message #3007110</title><guid isPermaLink="false">3007110@Uncensored</guid><description><![CDATA[ > In business-related, "real world" programming, I'm more inclined to   
 >agree that only a handful of languages are "necessary."  However, if we
 
 >stuck to what was just necessary, we'd probably all still be   
 >hand-crafting assembler programs.   
  
  Yeah. and just imagine how much farther along we'd be today. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3006352</link><pubDate>Fri, 29 Jul 2011 15:21:54 +0500</pubDate><title>Message #3006352</title><guid isPermaLink="false">3006352@Uncensored</guid><description><![CDATA[ I think it's appropriate to have various programming languages to help explore
new ways of programming.  Sure, you can write OO code in C, or rule-based
logic code in Java, but we wouldn't have necessarily learned all the advantages
and disadvantages of those techniques without new languages that fit those
paradigms. 
  
 In business-related, "real world" programming, I'm more inclined to agree
that only a handful of languages are "necessary."  However, if we stuck to
what was just necessary, we'd probably all still be hand-crafting assembler
programs. 
   Language Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3006219</link><pubDate>Fri, 29 Jul 2011 06:38:48 +0500</pubDate><title>Message #3006219</title><guid isPermaLink="false">3006219@Uncensored</guid><description><![CDATA[ >I think it's fair to ask: when *is* it appropriate to create a new   
 >language?  
  
  When there's a new architecture so vastly different from anything else,
that a new language could make better use of it than hacking an existing language
to do so, just because it is already popular. 
  That's my view anyway, and as such there hasn't been a need for a new language
since the web. 
  
  One could argue that 'stupid programmers' is a new architecture that would
require a new language, so the web and stupid programmers, there should be
like 4 languages total and that's it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3004205</link><pubDate>Fri, 22 Jul 2011 13:32:14 +0500</pubDate><title>Message #3004205</title><guid isPermaLink="false">3004205@Uncensored</guid><description><![CDATA[  
 Java has its share of problems that are most effectively addressed by changing
the rules. Most glaring issues are the absence of the uniform access principle,
and all that darn equals/hashCode boilerplate. Things like lambda expressions
are being addressed within the context of java, but cleaner solutions can
be found in a fresh language. 
  
 Actually my initial knee jerk on Kotlin may have been a little harsh. It
looks like a nice language in some respects. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3004201</link><pubDate>Fri, 22 Jul 2011 13:23:03 +0500</pubDate><title>Message #3004201</title><guid isPermaLink="false">3004201@Uncensored</guid><description><![CDATA[I think it's fair to ask: when *is* it appropriate to create a new language?
 It seems that most of the ones being created nowadays aren't exactly breaking
new ground. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3004195</link><pubDate>Fri, 22 Jul 2011 13:00:07 +0500</pubDate><title>Message #3004195</title><guid isPermaLink="false">3004195@Uncensored</guid><description><![CDATA[  
 Kotlin: looks incredibly similar to Scala, to the point of being kind of
a "me too." Me-tos are kinda rude to the general community, cause fragmentation...

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3004097</link><pubDate>Fri, 22 Jul 2011 08:26:58 +0500</pubDate><title>Message #3004097</title><guid isPermaLink="false">3004097@Uncensored</guid><description><![CDATA[<html><body>

<p>kortlin, just another "java done right on the same old java interpreter"</p>
<p>http://confluence.jetbrains.net/display/Kotlin/Hello%2C+world!</p>
<p>after scala, ceylon....</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003348</link><pubDate>Wed, 20 Jul 2011 10:46:45 +0500</pubDate><title>Message #3003348</title><guid isPermaLink="false">3003348@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, libpokele is probably a bad sample to unwind and code after...</p>
<p>all missing in there at first short glance is templates.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003324</link><pubDate>Wed, 20 Jul 2011 10:38:24 +0500</pubDate><title>Message #3003324</title><guid isPermaLink="false">3003324@Uncensored</guid><description><![CDATA[ > I tried openid a while ago, even with a library it was so hard to get 
 
 >working, I found it easier to write my own auth module   
  
 I did too, but it only does OpenID 1.1, and we're getting to the point where
RP's that don't support OpenID 2.0 are starting to become problematic. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003323</link><pubDate>Wed, 20 Jul 2011 10:37:40 +0500</pubDate><title>Message #3003323</title><guid isPermaLink="false">3003323@Uncensored</guid><description><![CDATA[ >  I think apache is fucking retarted (my opinion only) they jump   
 >through hoops like crazy to make their code unreadable so they can   
  
 Interestingly, the OpenID module for Apache makes use of libopkele.  I wonder
if it would be worth it to read through that code and see how they did it.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003097</link><pubDate>Tue, 19 Jul 2011 20:49:46 +0500</pubDate><title>Message #3003097</title><guid isPermaLink="false">3003097@Uncensored</guid><description><![CDATA[ I tried openid a while ago, even with a library it was so hard to get working,
I found it easier to write my own auth module 
  I realize openID is more than just an auth module, but the benefits weren't
worth the hassle. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003094</link><pubDate>Tue, 19 Jul 2011 20:41:55 +0500</pubDate><title>Message #3003094</title><guid isPermaLink="false">3003094@Uncensored</guid><description><![CDATA[ >    
 > By 'tricks', I meant that you might attempt to do something rather   
 >insane, and try to map C to C++ directly.  I wouldn't recommend that   
 >approach (and it'd be very hard, and rather non-portable).   
  
  It's hard and nonportable and you can do it, but actually all you have to
do is get a pointer to the function you want to call, pass it to your C program,
and then dereference it () so it calls the function. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003092</link><pubDate>Tue, 19 Jul 2011 20:40:43 +0500</pubDate><title>Message #3003092</title><guid isPermaLink="false">3003092@Uncensored</guid><description><![CDATA[ > Some people would argue, however, that sticking to plain C is an   
 >archaic practice.   
  
  Depends on the C. 
   
  I think apache is fucking retarted (my opinion only) they jump through hoops
like crazy to make their code unreadable so they can implement C++-like constructs
in C. What's the point except to make everything harder and more difficult
to read. They should have used the right tool for the job. 
   
  If you write C in C, it's the perfect tool for the job. 
   
  Ford (then again I've completely sold out and I write java) ][ 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003091</link><pubDate>Tue, 19 Jul 2011 20:38:56 +0500</pubDate><title>Message #3003091</title><guid isPermaLink="false">3003091@Uncensored</guid><description><![CDATA[ >really remember exactly what you're supposed to do to export those   
 >symbols as C symbols, but that's what you need.  Figure that out for   
 >g++, and you'll have it.   
  
  turns off the C++ name mangling so the linker can find the functions you're
referring to. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003089</link><pubDate>Tue, 19 Jul 2011 20:38:03 +0500</pubDate><title>Message #3003089</title><guid isPermaLink="false">3003089@Uncensored</guid><description><![CDATA[ >Well, I found this library:  [ http://kin.klever.net/libopkele/ ] and I
 
 >would like to use it from within Citadel, which is written in C.   
  
 Well obviously it would just be easier to port citadel to C++. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3003007</link><pubDate>Tue, 19 Jul 2011 16:50:13 +0500</pubDate><title>Message #3003007</title><guid isPermaLink="false">3003007@Uncensored</guid><description><![CDATA[<html><body>

<p>hmz, most probably any external implementation of openid is very hard to run in an event driven model.<a class="jewelButton" rel="toggle" name="notifications"> For that reason i'd vote against an external library.<br /></a></p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002918</link><pubDate>Tue, 19 Jul 2011 13:58:13 +0500</pubDate><title>Message #3002918</title><guid isPermaLink="false">3002918@Uncensored</guid><description><![CDATA[  
 Erm, Mac OS X is probably quite a bit scarier in regards to shared libraries,
but the above comments should apply to OS X in other respects... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002916</link><pubDate>Tue, 19 Jul 2011 13:52:20 +0500</pubDate><title>Message #3002916</title><guid isPermaLink="false">3002916@Uncensored</guid><description><![CDATA[ > Oh, I bet that trick does work with g++, because these guys explain   
 >it, too:   
 >    
 > http://dsc.sun.com/solaris/articles/mixing.html   
  
 g++ is dependent on platform-specific functionality of the underlying linker,
in at least two areas: template instantiation (handled by collect2, but assisted
by GNU binutils, I believe, if available), and ctors/dtors invocation. 
  
 ctors/dtors refer to static initializers and destructors. On most Unix platforms
I've seen, I believe gcc is smart enough to link in the appropriate crtN objects
to make sure that ctors/dtors are invoked properly even if you're building
a shared library. Vendor compilers may not be so smart but who uses them?
I also don't believe you need to worry about ensuring that main() is compiled
in C++ mode on either Linux or Solaris. In some cases, you can get away with
linking via "gcc -lstdc++" but it's probably safer and easier to use "c++"
for the final link phase. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002895</link><pubDate>Tue, 19 Jul 2011 12:24:19 +0500</pubDate><title>Message #3002895</title><guid isPermaLink="false">3002895@Uncensored</guid><description><![CDATA[  
 By 'tricks', I meant that you might attempt to do something rather insane,
and try to map C to C++ directly.  I wouldn't recommend that approach (and
it'd be very hard, and rather non-portable). 
  
 The other techniques we've discussed are better. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002843</link><pubDate>Tue, 19 Jul 2011 10:43:40 +0500</pubDate><title>Message #3002843</title><guid isPermaLink="false">3002843@Uncensored</guid><description><![CDATA[  
 I don't know about "tricks," but it's just a question of either (a) making
sure the entry points to the C++ code are declared extern "C", or (b) writing
a thin wrapper around the C++ library, also written in C++, which exposes
the necessary functionality in a C-compatible way, and is declared extern
"C". That's the portable way to do it, anyway... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002784</link><pubDate>Tue, 19 Jul 2011 08:03:15 +0500</pubDate><title>Message #3002784</title><guid isPermaLink="false">3002784@Uncensored</guid><description><![CDATA[  
 Eh... operating systems are built off C.  How bad is it? 
  
 How many functions are you actually looking to use within this library? 
It might not be as bad as it looks. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002564</link><pubDate>Mon, 18 Jul 2011 17:46:40 +0500</pubDate><title>Message #3002564</title><guid isPermaLink="false">3002564@Uncensored</guid><description><![CDATA[Yow.  This is one of those situations where I have to weigh the footprint
of using someone else's code versus the time-and-debugging footprint of writing
my own code. 
  
 OpenID 2.0 has some tricky stuff in it, but since it no longer seems to be
a moving target, and it's becoming clear that backwards compatibility with
OpenID 1.0 is no longer realistic (many OP's and RP's don't even bother supporting
it anymore, or refuse to because of security concerns). 
  
 Some people would argue, however, that sticking to plain C is an archaic
practice. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002489</link><pubDate>Mon, 18 Jul 2011 14:41:51 +0500</pubDate><title>Message #3002489</title><guid isPermaLink="false">3002489@Uncensored</guid><description><![CDATA[  
 Oh, I bet that trick does work with g++, because these guys explain it, too:

  
 http://dsc.sun.com/solaris/articles/mixing.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002487</link><pubDate>Mon, 18 Jul 2011 14:38:15 +0500</pubDate><title>Message #3002487</title><guid isPermaLink="false">3002487@Uncensored</guid><description><![CDATA[  
 Oh, here, read this: 
  
 http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002484</link><pubDate>Mon, 18 Jul 2011 14:37:32 +0500</pubDate><title>Message #3002484</title><guid isPermaLink="false">3002484@Uncensored</guid><description><![CDATA[  
 Uh, also note that I didn't use the 'extern "c"' keyword... I don't really
remember exactly what you're supposed to do to export those symbols as C symbols,
but that's what you need.  Figure that out for g++, and you'll have it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002483</link><pubDate>Mon, 18 Jul 2011 14:36:20 +0500</pubDate><title>Message #3002483</title><guid isPermaLink="false">3002483@Uncensored</guid><description><![CDATA[    
 I've had to do stuff like this a few times, although it might be a little
different for the unix environment than a Windows environment (but the concept
should be the same).   
    
 As the person out there suggests, you want to write a compatibility library
to help you interface with it.  It isn't as hard as it sounds.   
    
 You'll write it in C++, but you'll export its symbols as C code, so you can
access it as normal with a C library.   
    
 That's the part where I don't know how it works in g++... but in VC++ you
do an 'extern "C"' keyword, somewhat like:   
    
 http://msdn.microsoft.com/en-us/library/aa278939(v=vs.60).aspx?ppud=4   
    
 An example of how you might export a 'CFile' object in this way is as follows:
  
    
 void* create_c_file( const char* filename )   
 {   
  CFile* my_file = new CFile( filename );   
  return (void*) my_file;   
 }   
    
 void delete_c_file(
void* handle )   
 {   
  CFile* my_file = static_cast< CFile* >( handle );   
  delete my_file;   
 }   
    
 void write_c_file( void* handle )   
 {   
  CFile* my_file = static_cast< CFile* >( handle );   
  my_file->write( "Writing some characters.\r\n" );   
 }   
  
 c  
 And so on.  Note that I left out error checking in the interest of brevity..
just trying to convey the idea.  I should have written that last function:

  
 void write_c_file( void* handle, const char* text ) 
 { 
  CFile* my_file = static_cast< CFile* >( handle ); 
  my_file->write( text, strlen( text ) ); 
 } 
  
 (to better convey how you might pass args into the object's function). 
  
 It isn't hard, but it is annoying.  Still, if you only need a few of the
functions, it might work out well for you to just focus on the ones you need.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002466</link><pubDate>Mon, 18 Jul 2011 13:50:57 +0500</pubDate><title>Message #3002466</title><guid isPermaLink="false">3002466@Uncensored</guid><description><![CDATA[Well, I found this library:  [ http://kin.klever.net/libopkele/ ] and I would
like to use it from within Citadel, which is written in C. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002462</link><pubDate>Mon, 18 Jul 2011 13:36:45 +0500</pubDate><title>Message #3002462</title><guid isPermaLink="false">3002462@Uncensored</guid><description><![CDATA[  
 That's pretty broad. 
  
 1. Is it a dynamically linked C++ library, or a static one? 
 2. Are you calling functions that are C-like functions, or are they full
blown C++ object methods with which you're doing funky tricks to access via
C?  By 'funky', I mean something more bizarre than writing a C++-to-C library.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3002438</link><pubDate>Mon, 18 Jul 2011 12:20:21 +0500</pubDate><title>Message #3002438</title><guid isPermaLink="false">3002438@Uncensored</guid><description><![CDATA[Well, since we're discussing C++ could someone please tell me what would be
the impact of calling a C++ library from a C program?  Additional memory footprint
etc. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3001368</link><pubDate>Fri, 15 Jul 2011 16:40:47 +0500</pubDate><title>Message #3001368</title><guid isPermaLink="false">3001368@Uncensored</guid><description><![CDATA[  
 Bah, that's it, I'm outta here... 
  
 (jk) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3001337</link><pubDate>Fri, 15 Jul 2011 15:27:13 +0500</pubDate><title>Message #3001337</title><guid isPermaLink="false">3001337@Uncensored</guid><description><![CDATA[ C++ sucks! 
  
 Sorry, fleeb, couldn't resist.  ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=3001280</link><pubDate>Fri, 15 Jul 2011 12:58:47 +0500</pubDate><title>Message #3001280</title><guid isPermaLink="false">3001280@Uncensored</guid><description><![CDATA[  
 Eh... it's stupid for me to keep out of this room, when it's so appropriate
for much of what goes on in my head.  So, I'm back. 
  
 Let's see if I get pissed off in here again.  I suspect not. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2998248</link><pubDate>Thu, 07 Jul 2011 10:58:14 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2998248@Uncensored</guid><description><![CDATA[Or, just use Google+ and not Facebook. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2997367</link><pubDate>Tue, 05 Jul 2011 15:39:19 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2997367@Uncensored</guid><description><![CDATA[<html><body>

<p>*snigger*  Or, found a way to redirect the Circle+ users to Facebook and the Facebook users to Circle+.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2996804</link><pubDate>Mon, 04 Jul 2011 17:26:22 +0500</pubDate><title>Message #2996804</title><guid isPermaLink="false">2996804@Uncensored</guid><description><![CDATA[  a fun project would be one that just spiders facebook and makes google accounts
and one that spiders google+ and makes facebook accounts. 
  You'll be doing them a service by backing them up to each other. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2996782</link><pubDate>Mon, 04 Jul 2011 09:34:29 +0500</pubDate><title>Message #2996782</title><guid isPermaLink="false">2996782@Uncensored</guid><description><![CDATA[<html><body>

<p>https://github.com/voloko/facebook-circles</p>
<p>implementing parts of the google+ interface on top of facebook..</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2994252</link><pubDate>Thu, 23 Jun 2011 18:34:47 +0500</pubDate><title>Message #2994252</title><guid isPermaLink="false">2994252@Uncensored</guid><description><![CDATA[Yes.  You can download some butter to go with them. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2993740</link><pubDate>Wed, 22 Jun 2011 01:25:55 +0500</pubDate><title>Message #2993740</title><guid isPermaLink="false">2993740@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2993714</link><pubDate>Tue, 21 Jun 2011 23:40:56 +0500</pubDate><title>Message #2993714</title><guid isPermaLink="false">2993714@Uncensored</guid><description><![CDATA[  
 used to be called "proggies". Now they're just "apps". 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2992951</link><pubDate>Mon, 20 Jun 2011 10:29:01 +0500</pubDate><title>Message #2992951</title><guid isPermaLink="false">2992951@Uncensored</guid><description><![CDATA["Mister Jobs does not approve of your application." 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2992534</link><pubDate>Sat, 18 Jun 2011 19:06:42 +0500</pubDate><title>Message #2992534</title><guid isPermaLink="false">2992534@Uncensored</guid><description><![CDATA[ no actually we all think os/x development really sucks. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2992280</link><pubDate>Fri, 17 Jun 2011 22:25:19 +0500</pubDate><title>Message #2992280</title><guid isPermaLink="false">2992280@Uncensored</guid><description><![CDATA[Any Apple OS/X fanboy programmers in da house? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2991810</link><pubDate>Thu, 16 Jun 2011 16:16:35 +0500</pubDate><title>Message #2991810</title><guid isPermaLink="false">2991810@Uncensored</guid><description><![CDATA[ I wouldn't know personally, but I thought gcc was the shit when it came to
tight code. 
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2991523</link><pubDate>Wed, 15 Jun 2011 10:58:24 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2991523@Uncensored</guid><description><![CDATA[<html><body>

<p>well, thats probably what for example apple (and others) wants, so they can closely bind it into their IDE...</p>
<p>but... since even microsoft has been giving away their C-Compiler for free for several years now... so does intel with their ICC and sun (oracle) with their Sun-Studio...</p>
<p>I guess its just getting harder to ask a price from customers for the compiler itself...</p>
<p>and... the number of software you can compile with this compiler without having to correct all those little quirks we all know...</p>
<p>I think their marketing aproach changed from "people wanting high performance binaries will come to us" to "people knowing the good performance of our compiler will come to us once they have serious business and need services like special tuning"</p>
<p>if its high end computing, those tunings can probably save you reasonable expensive time on clusters and such.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2991515</link><pubDate>Wed, 15 Jun 2011 10:22:35 +0500</pubDate><title>Message #2991515</title><guid isPermaLink="false">2991515@Uncensored</guid><description><![CDATA[Abandonware? 
  
 Also I seriously doubt their claim that the open source community has been
requesting "a modern debugger that is not encumbered by the GPLv3." 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2991506</link><pubDate>Wed, 15 Jun 2011 09:26:44 +0500</pubDate><title>Message #2991506</title><guid isPermaLink="false">2991506@Uncensored</guid><description><![CDATA[<html><body>

<p>so... another compiler in da house?</p>
<p>http://www.pathscale.com/ekopath4-open-source-announcement</p>
<p>lets see when the source follows the anouncement.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2990933</link><pubDate>Mon, 13 Jun 2011 14:57:44 +0500</pubDate><title>Message #2990933</title><guid isPermaLink="false">2990933@Uncensored</guid><description><![CDATA[<html><body>

<p><img src="http://sdkproductions.hopto.org/img/foxtrot_ccode.jpg" alt="" width="600" height="197" /></p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2987026</link><pubDate>Tue, 31 May 2011 15:13:31 +0500</pubDate><title>Message #2987026</title><guid isPermaLink="false">2987026@Uncensored</guid><description><![CDATA[ I don't think fleeb follows this room anymore. 
  
 He posted something over in Techie Talk just last week, though. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2986826</link><pubDate>Tue, 31 May 2011 02:24:52 +0500</pubDate><title>Message #2986826</title><guid isPermaLink="false">2986826@Uncensored</guid><description><![CDATA[<html><body>

<p>*gngn* where was the original discussion at?</p>
<p>fleeb, I get this:</p>
<p>gcc base_xx.cpp -o test1<br />In file included from /usr/include/c++/4.5/unordered_map:35:0,<br /> from base_64.h:18,<br /> from base_xx.cpp:5:<br />/usr/include/c++/4.5/bits/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.<br />In file included from base_xx.cpp:5:0:<br />base_64.h:285:12: error: 'unordered_map' in namespace 'std' does not name a type<br />base_64.h:476:4: error: 'char_lookup_t' does not name a type<br />base_64.h: In member function 'int tvr::decode::base_64::decode_value(char)':<br />base_64.h:451:10: error: '_alphabet_map' was not declared in this scope<br />base_64.h:455:5: error: 'char_lookup_t' has not been declared<br />base_64.h:455:35: error: expected ';' before 'found'<br />base_64.h:456:10: error: 'found' was not declared in this scope<br />base_64.h:456:19: error: '_alphabet_map' was not d
<p> </p>
<p>and the other one... no main?</p>
<p>gcc cdecode.c -o test<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0 has invalid symbol index 11<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1 has invalid symbol index 12<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2 has invalid symbol index 2<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3 has invalid symbol index 2<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4 has invalid symbol index 11<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 5 has invalid symbol index 13<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 6 has invalid symbol index 13<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 7 has invalid symbol index 13<br />/usr/bin/ld.bfd.real: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 8 has invalid symbol i
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2984339</link><pubDate>Tue, 24 May 2011 15:16:45 +0500</pubDate><title>Message #2984339</title><guid isPermaLink="false">2984339@Uncensored</guid><description><![CDATA[you speak of chrome os. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983920</link><pubDate>Mon, 23 May 2011 17:13:13 +0500</pubDate><title>Message #2983920</title><guid isPermaLink="false">2983920@Uncensored</guid><description><![CDATA[<html><body>

<p>well, maybe just a browser plugin therefore?</p>
<p>since they're intending to get those fat localy cached webapps maybe thats the way to go?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983848</link><pubDate>Mon, 23 May 2011 15:12:45 +0500</pubDate><title>Message #2983848</title><guid isPermaLink="false">2983848@Uncensored</guid><description><![CDATA[ > Even if that was all you were limited to, you could set up the site   
 >hosting the JS page to act as a proxy.  Send a special XMLHttpRequest  

 >that would cause the hosting site to open up a socket for you.   
  
 Yeah, that.  :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983847</link><pubDate>Mon, 23 May 2011 15:12:28 +0500</pubDate><title>Message #2983847</title><guid isPermaLink="false">2983847@Uncensored</guid><description><![CDATA[I can't imagine anyone's going to use it for anything other than research
and demonstration, so it really doesn't matter.  I suppose if you really wanted
a network stack, you would need a server-side component that allowed the javascript
thing to make xmlhttprequest requests that correspond to the sending and receiving
of ethernet packets on the server side. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983846</link><pubDate>Mon, 23 May 2011 15:11:23 +0500</pubDate><title>Message #2983846</title><guid isPermaLink="false">2983846@Uncensored</guid><description><![CDATA[ node.js sounds cool, but it's intended to be serverside. 
  Once you allow that shit in a browser, that will really be the end. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983845</link><pubDate>Mon, 23 May 2011 15:09:42 +0500</pubDate><title>Message #2983845</title><guid isPermaLink="false">2983845@Uncensored</guid><description><![CDATA[yeah, but that's a lousy way to do it, and it opens you up to spammers and
all whatelse. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983822</link><pubDate>Mon, 23 May 2011 14:19:03 +0500</pubDate><title>Message #2983822</title><guid isPermaLink="false">2983822@Uncensored</guid><description><![CDATA[ Even if that was all you were limited to, you could set up the site hosting
the JS page to act as a proxy.  Send a special XMLHttpRequest that would cause
the hosting site to open up a socket for you. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983794</link><pubDate>Mon, 23 May 2011 13:42:22 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2983794@Uncensored</guid><description><![CDATA[<html><body>

<p>depends. probably node.js allows you to.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983710</link><pubDate>Mon, 23 May 2011 10:04:55 +0500</pubDate><title>Message #2983710</title><guid isPermaLink="false">2983710@Uncensored</guid><description><![CDATA[  I just realized though, you can't write a network stack, you can't do network
calls from javascript, can you? All you get is xmlhttp request, and that's
it right? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983276</link><pubDate>Sat, 21 May 2011 17:24:17 +0500</pubDate><title>Message #2983276</title><guid isPermaLink="false">2983276@Uncensored</guid><description><![CDATA[nebermind, saw it dicussed in another room. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2983271</link><pubDate>Sat, 21 May 2011 17:04:44 +0500</pubDate><title>Message #2983271</title><guid isPermaLink="false">2983271@Uncensored</guid><description><![CDATA[http://bellard.org/jslinux/ 
  
 boot a linux machine in pc emulated via javasvript. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2977812</link><pubDate>Fri, 13 May 2011 16:48:06 +0500</pubDate><title>Message #2977812</title><guid isPermaLink="false">2977812@Uncensored</guid><description><![CDATA[No, that never happens :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2977004</link><pubDate>Thu, 12 May 2011 07:33:58 +0500</pubDate><title>Message #2977004</title><guid isPermaLink="false">2977004@Uncensored</guid><description><![CDATA[ > May 11 2011 5:00am from dothebart @uncnsrd   
 >lol.   
 >  
 >10:58  yath: ah ja,  
 >http://git.gnome.org/browse/frogr/commit/?id=d20b4b7679a64349c09b611b6 

 >376f20bfa4fb1d2  
 >  
  
  I came across a similar page yesterday... all the things that happened during
the development cycle of duke nukem forever.  
  Perhaps this project of his is equally lengthy and he got married and had
a kid within all that time. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2976462</link><pubDate>Wed, 11 May 2011 09:27:10 +0500</pubDate><title>Message #2976462</title><guid isPermaLink="false">2976462@Uncensored</guid><description><![CDATA[Heh.  Sounds like she *tried* to lure him away from the computer but wasn't
*always* successful. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2976377</link><pubDate>Wed, 11 May 2011 05:00:28 +0500</pubDate><title>Message #2976377</title><guid isPermaLink="false">2976377@Uncensored</guid><description><![CDATA[<html><body>

<p>lol.</p>
<p>10:58  yath: ah ja, http://git.gnome.org/browse/frogr/commit/?id=d20b4b7679a64349c09b611b6376f20bfa4fb1d2<br /><br /></p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2975710</link><pubDate>Mon, 09 May 2011 11:20:57 +0500</pubDate><title>Message #2975710</title><guid isPermaLink="false">2975710@Uncensored</guid><description><![CDATA[ >isn't supposed to change once it's been written?  Obviously you can   
 >track that message-id as it works its way through the various parts of 
 
 >the mail system, but that merely requires that the id is 100% unique   
 >within the system.   
  
   When it bounces back. DSNs for delays or failure to deliver, I can find
out who it was for, what job it came from yada yada yada. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2975275</link><pubDate>Sat, 07 May 2011 21:56:54 +0500</pubDate><title>Message #2975275</title><guid isPermaLink="false">2975275@Uncensored</guid><description><![CDATA[How do you manage to implement message tracking in a message-id that isn't
supposed to change once it's been written?  Obviously you can track that message-id
as it works its way through the various parts of the mail system, but that
merely requires that the id is 100% unique within the system. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2973369</link><pubDate>Tue, 03 May 2011 16:31:33 +0500</pubDate><title>Message #2973369</title><guid isPermaLink="false">2973369@Uncensored</guid><description><![CDATA[ I put lots of useful things in my message id so I can track exactly what
happened when/if the message bounces back. 
  I don't know if you care about that, but tracking everything about an email
is the hot reporting item people will pay lots of money for. 
  If you can track why it bounced, when it bounced, how long it took to deliver,
if it was opened, who opened it, how many times they opened it, all that kinda
stuff, people LOVE that shit. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2972239</link><pubDate>Sun, 01 May 2011 13:00:52 +0500</pubDate><title>Message #2972239</title><guid isPermaLink="false">2972239@Uncensored</guid><description><![CDATA[It's always important to design namespaces that will be compatible with the
upcoming Intergalactic Internet. 
  
 For what it's worth, I settled on xxxxxxxx-yyyyyyyy@host, where x is the
unix timestamp in hex, and y is the message number in the local datastore,
also in hex. 
  
 I will rely on the DNS community to ensure that the hostname is unique within
an intergalactic namespace :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2972109</link><pubDate>Sat, 30 Apr 2011 22:31:23 +0500</pubDate><title>Message #2972109</title><guid isPermaLink="false">2972109@Uncensored</guid><description><![CDATA[  
 Ahh, just use a GUID library! Wait, that's just random... ok, all you need
to make Message Id's universally unique is a canonical form. E.g., Message-Id:
MilkyWay:WesternSpiralArm:UnfashionableDistrict:Sol:3:NorthAmerica:Suburbs:Westchester.

  
 Catch my drift? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2972026</link><pubDate>Sat, 30 Apr 2011 14:24:22 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2972026@Uncensored</guid><description><![CDATA[Hmm ... there's another good point about message ID's -- some systems will
generate message ID 
 s that are reused if the software is reinstalled. 
  
 (Guilty as charged.  Must fix.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2971520</link><pubDate>Fri, 29 Apr 2011 03:48:44 +0500</pubDate><title>Message #2971520</title><guid isPermaLink="false">2971520@Uncensored</guid><description><![CDATA[<html><body>

<p>oh, just another language for the java interpreter: groovy bringing syntax from python/ruby/... like closures</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2970232</link><pubDate>Tue, 26 Apr 2011 03:57:22 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2970232@Uncensored</guid><description><![CDATA[<html><body>

<p>http://www.google.com/search?q=messageid+site%3Ajwz.org&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-US:unofficial&amp;client=iceweasel-a</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2970114</link><pubDate>Mon, 25 Apr 2011 15:22:26 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2970114@Uncensored</guid><description><![CDATA[ >in general the MTA/MDA must just add its ip to the list, and not  
 >delete/modify other headers.   
  
 Yeah, you're never supposed to touch any other headers as you pass mail along.
You're only supposed to add a new "received:" header to the top of the message
before all others so you can track a message's delivery chain from bottom
to top. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2970113</link><pubDate>Mon, 25 Apr 2011 15:20:33 +0500</pubDate><title>Message #2970113</title><guid isPermaLink="false">2970113@Uncensored</guid><description><![CDATA[ > IG and Ford, this one's for you. What does a typical MTA/MDA do with  

 >the Message-Id header? are they eliminating dupes on it, or not?   
  
 Heh heh, wonderful question. 
  In theory they're supposed to be world unique so you SHOULD (not in the
rfc822 sense of the word) be able to remove dups based on it, but in practice,
you can't. 
  I have seen and been burned by companies (that I would say spam, but I was
told it was legitmate mail) that sent an identical mail to thousands of people,
except for the click the link for your account into. 
 info. 
   
  So even though the message id was identical they were in fact different
in one very bit of important content, and one person ended up unregistering
another as a result and we got in trouble.  
  So in short you can use it roughly to identify a world unique message, but
you can't guarantee it. 
  As for what they do with it, not much.
It's used for tracking a message in logs sometimes, but functionally it's
not part of any protocol or anything like that, even though I think (off the
top of my head) it's a required header. 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2969879</link><pubDate>Sun, 24 Apr 2011 12:29:30 +0500</pubDate><title>Message #2969879</title><guid isPermaLink="false">2969879@Uncensored</guid><description><![CDATA[The job of transport is transport, not policy.  I know of no MTA's that perform
dupe-zapping on ordinary mail delivered via SMTP.  I've only seen that done
in densely connected networks where a message may arrive via more than one
path (i.e. netnews, not mail). 
  
 Some MUA's will index the Message-ID if they need to build thread references,
and if you've got an MDA that is participating in that game, then it might
have a hand in it.  Tightly integrated systems like Citadel don't have a discrete
MDA, for example.  But your typical unix-pluggable chain will probably use
an MDA that deals only in transport and not policy. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2969429</link><pubDate>Fri, 22 Apr 2011 05:04:49 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2969429@Uncensored</guid><description><![CDATA[<html><body>

<p>in general the MTA/MDA must just add its ip to the list, and not delete/modify other headers.</p>
<p>If you're using MS RFCViolator Server edition... dunno.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2969381</link><pubDate>Thu, 21 Apr 2011 22:01:16 +0500</pubDate><title>Message #2969381</title><guid isPermaLink="false">2969381@Uncensored</guid><description><![CDATA[  
 IG and Ford, this one's for you. What does a typical MTA/MDA do with the
Message-Id header? are they eliminating dupes on it, or not? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2967297</link><pubDate>Thu, 14 Apr 2011 10:12:02 +0500</pubDate><title>Message #2967297</title><guid isPermaLink="false">2967297@Uncensored</guid><description><![CDATA[I'm more interested in seeing what the SDK looks like.  Are they going to
build something cross-platform or are they going to be lazy and bind it to
Glib and GTK like the Mono monkeys did? 
  
 The obvious win would be to bind it to Qt so you get a full set of cross-platform
services on day one. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2967272</link><pubDate>Thu, 14 Apr 2011 08:57:14 +0500</pubDate><title>Message #2967272</title><guid isPermaLink="false">2967272@Uncensored</guid><description><![CDATA[  
 Too bad they left out type inference. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2967229</link><pubDate>Thu, 14 Apr 2011 05:31:13 +0500</pubDate><title>Message #2967229</title><guid isPermaLink="false">2967229@Uncensored</guid><description><![CDATA[<html><body>

<p>Ceylon, the next Java done right Programminglanguage to run on the Java interpreter:</p>
<p>https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=true&amp;srcid=0B7IgMTLsf_SzODkwNGRmYTQtODMyYy00NjhjLTkyZTQtMzBhZmY5NDFjMzMy&amp;hl=en&amp;authkey=CNy76dkK</p>
<p>and before you ask, no every other interpreted language around, c-carpet, scala, python, ruby to name just a few of them, didn't cut it.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2966783</link><pubDate>Tue, 12 Apr 2011 17:11:58 +0500</pubDate><title>Message #2966783</title><guid isPermaLink="false">2966783@Uncensored</guid><description><![CDATA[  
 Glad to be of help (?) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2966438</link><pubDate>Mon, 11 Apr 2011 16:07:43 +0500</pubDate><title>Message #2966438</title><guid isPermaLink="false">2966438@Uncensored</guid><description><![CDATA[Thanks LS, you made me recall how Savio Lam misspelled "gauge" all those years
ago, and after revisiting the issue I've discovered that "whiptail" has *completely*
replaced "dialog" on pretty much every Linux system I checked.  Now I can
build that test back into my installation scripts again.  :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2966393</link><pubDate>Mon, 11 Apr 2011 13:49:52 +0500</pubDate><title>Message #2966393</title><guid isPermaLink="false">2966393@Uncensored</guid><description><![CDATA[  
 ***You must maintain the original names, complete with speling errors!***

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2965951</link><pubDate>Sat, 09 Apr 2011 11:43:13 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2965951@Uncensored</guid><description><![CDATA[<html><body>

<p>What if the library or service contains object names with obvious spelling errors?  That drives me crazy!</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2965756</link><pubDate>Fri, 08 Apr 2011 11:45:40 +0500</pubDate><title>Message #2965756</title><guid isPermaLink="false">2965756@Uncensored</guid><description><![CDATA[  
 Programming anti-pattern #35471: a library or service you use chose a perfectly
good name for something. Make sure you rename it within your layer, because
it isn't "your" name. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2965753</link><pubDate>Fri, 08 Apr 2011 11:36:09 +0500</pubDate><title>Message #2965753</title><guid isPermaLink="false">2965753@Uncensored</guid><description><![CDATA[  
 No! Not if you're doing a lot of CPU-intensive computation. Even on a multicore
CPU, communication costs related to context switching and inter-thread communication
can be quite large. There's a big latency penalty when you have to reach beyond
your core's local cache to the shared cache. 
  
 So for pure CPU-intensive work, the name of the game is to build a pool of
n threads, where n typically equals the number of hardware threads. The number
of lightweight tasks typically exceeds the number of threads, so these are
cooperatively scheduled in such a way as to maximize locality. Where possible,
threads execute their ownn subtasks, but where this is not possible, another
thread will step in to help via work stealing. To minimize communication costs,
the amount of work stolen must be relatively large. C.f. ParallelArray. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2965398</link><pubDate>Thu, 07 Apr 2011 12:13:14 +0500</pubDate><title>Message #2965398</title><guid isPermaLink="false">2965398@Uncensored</guid><description><![CDATA[Isn't task scheduling the operating system's job? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2957708</link><pubDate>Mon, 04 Apr 2011 16:58:21 +0500</pubDate><title>Message #2957708</title><guid isPermaLink="false">2957708@Uncensored</guid><description><![CDATA[    
 If you think that's bad, try doing lightweight task scheduling with continuations
>:-) -- for job security of course!   
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2957313</link><pubDate>Sun, 03 Apr 2011 16:24:36 +0500</pubDate><title>Message #2957313</title><guid isPermaLink="false">2957313@Uncensored</guid><description><![CDATA[ yes they do in fact you make a good point that you don't know what other
shit you're carrying along with you while your closure is still alive. 
  Java sucks that way too, since there are no destructors because you never
really know when your object is going to go away you have to take care to
make sure your object is safely put to bed when you need it to be, because
you can't rely on the GC to do it for you in a timely manner. 
  Same problem with closures, you could have a threadpool or something crazy
like that hanging out because you have a very nested closure still in existance.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956929</link><pubDate>Sat, 02 Apr 2011 00:34:30 +0500</pubDate><title>Message #2956929</title><guid isPermaLink="false">2956929@Uncensored</guid><description><![CDATA[  
 Well, closures are different from objects in the first place only in surface
syntax... so the whole discussion is kind of a handwave to begin with. But
if you're going to create a lot of reusable control structures and threads,
the braces nest more nicely ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956848</link><pubDate>Fri, 01 Apr 2011 17:46:26 +0500</pubDate><title>Message #2956848</title><guid isPermaLink="false">2956848@Uncensored</guid><description><![CDATA[ thus the value add here is gc not closures... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956832</link><pubDate>Fri, 01 Apr 2011 17:01:36 +0500</pubDate><title>Message #2956832</title><guid isPermaLink="false">2956832@Uncensored</guid><description><![CDATA[ >  If you don't have closures you wouldn't design something with memory 
 
 >ownership being ambiguous.   
  
 Actually this API looks almost identical with a plain old Java-esque object
system rather than closures... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956808</link><pubDate>Fri, 01 Apr 2011 15:37:28 +0500</pubDate><title>Message #2956808</title><guid isPermaLink="false">2956808@Uncensored</guid><description><![CDATA[ I like how they say pop3 this broken, doesn't mention WHO's implementation
is broken. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956789</link><pubDate>Fri, 01 Apr 2011 14:54:28 +0500</pubDate><title>Message #2956789</title><guid isPermaLink="false">2956789@Uncensored</guid><description><![CDATA[ > Doing the time warp this way, is much easier.   
  
 Yes, but that's sort of the cart following the horse. 
  If you don't have closures you wouldn't design something with memory ownership
being ambiguous. 
  the fact that closures rely on GC says more for GC than it does for closures.
 
  
 Ford (good bad or ugly, I still think Flying Scope is a better name) ][ 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956685</link><pubDate>Fri, 01 Apr 2011 10:31:47 +0500</pubDate><title>Message #2956685</title><guid isPermaLink="false">2956685@Uncensored</guid><description><![CDATA[<html><body>

<p>blargh... since when did mozilla make firefox so damn critical of where you put a &lt;tbody&gt;?!? IE, Opera, Chrome, and Safari didn't care, why did Firefox4?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956632</link><pubDate>Fri, 01 Apr 2011 06:13:12 +0500</pubDate><title>POP3 Service STLS Plaintext Command Injection</title><guid isPermaLink="false">2956632@Uncensored</guid><description><![CDATA[<html><body>

<p><span style="color: #053958; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold; line-height: 16px;">
<div class="inner" style="padding: 10px;">
<p style="margin-bottom: 0.1em;">security tool found:</p>
<p style="margin-bottom: 0.1em;"> </p>
<p style="margin-bottom: 0.1em;">POP3 Service STLS Plaintext Command Injection</p>
<hr class="blue" style="margin-bottom: 1.2em; line-height: 1em; border: 1px solid #7ea5bd;" />
<p style="margin-bottom: 0.1em;">Synopsis<br /><span class="less grey" style="font-weight: normal; color: #69737b;">The remote mail service allows plaintext command injection while negotiating an encrypted communications channel.</span></p>
<p style="margin-bottom: 0.1em;">List of Hosts<br /><span class="less" style="font-weight: normal;"><br />x.x.x.x</span></p>
<p style="margin-bottom: 0.1em;"><span class="pluginOutput">Plugin Output<br /></span><span class="less grey" style="font-weight: normal; color: #69737b;"><br />Nessus sent the following two commands in a single packet :<br /><br />STLS\r\nCAPA\r\n<br /><br />And the server sent the following two responses :<br /><br />+OK Begin TLS negotiation now<br />+OK Capability list follows<br /></span></p>
<br />
<p style="margin-bottom: 0.1em;"> </p>
</div>
<hr style="margin-bottom: 1.2em; line-height: 1em; border: 1px solid #d2d9db;" />
<div class="inner" style="padding: 10px;">
<p style="margin-bottom: 0.1em; margin-top: 0px;">Description<br /><span class="less grey" style="font-weight: normal; color: #69737b;">The remote POP3 service contains a software flaw in its STLS<br />implementation that could allow a remote unauthenticated attacker to<br />inject commands during the plaintext protocol phase that will be<br />executed during the ciphertext protocol phase. <br /><br />Successful exploitation could allow an attacker to steal a victim's<br />email or associated SASL (Simple Authentication and Security Layer)<br />credentials.</span></p>
</div>
<hr style="margin-bottom: 1.2em; line-height: 1em; border: 1px solid #d2d9db;" />
<div class="inner" style="padding: 10px;">
<p style="margin-bottom: 0.1em; margin-top: 0px;">Solution<br /><span class="less grey" style="font-weight: normal; color: #69737b;">Contact the vendor to see if an update is available.</span></p>
</div>
<hr style="margin-bottom: 1.2em; line-height: 1em; border: 1px solid #d2d9db;" />
<div class="inner" style="padding: 10px;">
<p style="margin-bottom: 0.1em; margin-top: 0px;">See also<br /><a style="color: #053958;" href="http://tools.ietf.org/html/rfc2487">http://tools.ietf.org/html/rfc2487</a><br /><a style="color: #053958;" href="http://www.securityfocus.com/archive/1/516901/30/0/threaded">http://www.securityfocus.com/archive/1/516901/30/0/threaded</a></p>
</div>
</span></p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956298</link><pubDate>Thu, 31 Mar 2011 15:26:04 +0500</pubDate><title>Message #2956298</title><guid isPermaLink="false">2956298@Uncensored</guid><description><![CDATA[    
 Perfect use case for closures:   
    
 You have a ThreadPoolManager that kicks off function pointers (closures,
objects, whatever) to worker threads. It implements a couple of methods: 
 
    
 void execute(Function foo) // schedule for asynchronous execution asap  

 void schedule(Function foo, int delay) // schedule after a delay   
    
 Foo wants to try some task that might fail, so if it fails, it wants to reschedule
itself after a retry delay, by calling back to the scheduler and passing itself
back. In a non-GC'd environment, this interface style doesn't entirely work
(who's responsible for calling free()?) and probably needs to be redefined
in a much less convenient fashion.   
  
  
 Doing the time warp this way, is much easier. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2956021</link><pubDate>Wed, 30 Mar 2011 19:09:43 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2956021@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mi Mär 30 2011 13:09:41 EDT</span> <span>von   Ford II @ Uncensored </span> <span class="message_subject">Betreff: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>linkeage, clang can do better optimization across .o borders (like   <br />inline functions...), which GCC can't by definition.    <br /></blockquote>
<br />Yeah, I read that somewhere. What a load of shit. That works well only if you completely ignore the efficiency lost TO AN ENTIRE LAYER OF INTERPRETATION. <br />Their argument that they can find better optimizations by writing to a uniform interpreter takes away ANY possibility of optomizing for the actual platform you're running on.  <br />programmers have turned into politicians, and all politicians are assholes.</div>
</div>
</blockquote>
<p>we'll see whether they manage to catch up in performance with GCC ;-P until that the GCC developers have something to stare at in their rearview mirror (in performance) and something to catch up to (in better error messages)</p>
<p>in other points, it even finds some more errors, which one might have to search with valgrind otherwise.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2955897</link><pubDate>Wed, 30 Mar 2011 13:09:41 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2955897@Uncensored</guid><description><![CDATA[ >linkeage, clang can do better optimization across .o borders (like  
 >inline functions...), which GCC can't by definition.   
  
  Yeah, I read that somewhere. What a load of shit. That works well only if
you completely ignore the efficiency lost TO AN ENTIRE LAYER OF INTERPRETATION.

  Their argument that they can find better optimizations by writing to a uniform
interpreter takes away ANY possibility of optomizing for the actual platform
you're running on. 
  programmers have turned into politicians, and all politicians are assholes.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2955775</link><pubDate>Wed, 30 Mar 2011 04:54:09 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2955775@Uncensored</guid><description><![CDATA[<html><body>

<p>yes. clang was started out as a research project, c/c++ are compiled into intermediate code (which you could deliver as sort of the usual firmware BLOB)</p>
<p>it has some possibilities to find more errors by code analysis, and it has the ability to give you error messages that realy point you to all aspects of an error not just give you a vague idea what it is, and leaves the rest upon your interpretation; Take for example a header with a class with missing semicolon as last thing: class foo {}&lt;EOF&gt; GCC will report the error in your next include. Clang also does a much better job of unwinding defines and tell you where you have errors within them or their useage. Next due to the late linkeage, clang can do better optimization across .o borders (like inline functions...), which GCC can't by definition.</p>
<p>next to that GCC got a little old and clumsy, even the re-merged EGCS doesn't have left much of its effect to bring the will of innovation. Two years ago GCC was a little like IE6 in 2005: its there, its got the market dominance and there were no real alternatives, its sort of like all monopolies are bad, even in opensource. Now theres CLANG to have other ways to find a way ahead, which might bear innovations, which GCC developers might not even think about, just because of its complicated to implement in their code-base.</p>
<p>So, you see there are several good reasons to have CLANG around, be its compiled code more effective than gcc or not.</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2955652</link><pubDate>Tue, 29 Mar 2011 17:31:53 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2955652@Uncensored</guid><description><![CDATA[ >they're doing CLANG because of that. Ta ke a look at the appstore and  
 >its legal footnotes what apple thinks about freedom. didn't hear  
 >about samba yet though...  
  
 So, is there any real purpose of CLANG other than "not invented here" ??

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2955274</link><pubDate>Mon, 28 Mar 2011 14:22:04 +0500</pubDate><title>Message #2955274</title><guid isPermaLink="false">2955274@Uncensored</guid><description><![CDATA[<html><body>

<p>re: FreeTDS</p>
<p>So, apparently xampp for linux already comes bundled with freetds, all i had to do is go into the config file and add the instance to the dsn list... huh, go figure</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2954326</link><pubDate>Fri, 25 Mar 2011 14:52:37 +0500</pubDate><title>Message #2954326</title><guid isPermaLink="false">2954326@Uncensored</guid><description><![CDATA[<html><body>

<p>i got FreeTDS to connect using unixODBC installed from the standard ubuntu repos.</p>
<p>now if i could figure out how to get apache (xampp) to connect with the dsn i set up in freetds...... hmm..</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2954308</link><pubDate>Fri, 25 Mar 2011 14:20:17 +0500</pubDate><title>Message #2954308</title><guid isPermaLink="false">2954308@Uncensored</guid><description><![CDATA[ > Mar 23 2011 5:49pm from IGnatius T Foobar @uncnsrd     
 >Wouldn't it be simpler to just support nested functions?  That seems to
   
 >be a clearer way of allowing any variable's scope to cover exactly the 
   
 >amount of code you want it to.     
 >      
 > It certainly would eliminate a lot of unnecessary jumping through     
 >hoops in situations where global variables are undesirable (threaded   
 
 >programs etc) and you have to pass scope around to callback functions  
  
 >using a bunch of custom data structures and a pointer.     
 >      
 > I've *often* wished I could use nested functions in C, and they're    

 >supported by GNU C, but not portable to other compilers.  I seem to    

 >remember someone saying, however, that it the compiler resorts to some 
   
 >dirty assembler tricks to make it happen.     
 >     
 >    
    
 1) Closures **are** nested functions.   
 2)
Yes, gcc pushes an executable trampoline on the stack to make nested functions
happen. Dirty assembler trick? You decide. Probably less so than what's going
on in a lot of other language runtimes.   
  
  
 Certainly there are faster ways to get the same effect. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2954246</link><pubDate>Fri, 25 Mar 2011 12:34:12 +0500</pubDate><title>Message #2954246</title><guid isPermaLink="false">2954246@Uncensored</guid><description><![CDATA[stackoverflow.com 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2954216</link><pubDate>Fri, 25 Mar 2011 10:52:22 +0500</pubDate><title>Message #2954216</title><guid isPermaLink="false">2954216@Uncensored</guid><description><![CDATA[<html><body>

<p>Ok, i've yet again come back to the programming guru's here at UCG to ask for some help.</p>
<p>I need to connect my local apache server to a remote mssql database.</p>
<p>Some background info:</p>
<p>Ubuntu 10.10<br />Xampp (latest version) - <a href="http://www.apachefriends.org/en/xampp-linux.html">http://www.apachefriends.org/en/xampp-linux.html<br /></a>remote sql server: Microsoft SQL Server 2008 (Enterprise Evaluation Edition)</p>
<p>So far, i found <a href="http://www.easysoft.com/developer/languages/php/sql_server_unix_tutorial.html#driver">this article</a> that describes how to use ODBC, but i've had no luck getting the apache server to recognize the odbc connection.</p>
<p>If anyone has an easy way, please share it. Otherwise, I'll keep dinking with it until I find a way to work.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2954100</link><pubDate>Fri, 25 Mar 2011 03:16:46 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2954100@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Do Mär 24 2011 23:10:44 EDT</span> <span>von   IGnatius T Foobar @ Uncensored</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />I also heard that Apple is forking GCC and Samba because Mister Jobs does not like the GPL3.</div>
</div>
</blockquote>
<p>they're doing CLANG because of that. Ta ke a look at the appstore and its legal footnotes what apple thinks about freedom. didn't hear about samba yet though...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2954040</link><pubDate>Thu, 24 Mar 2011 23:10:44 +0500</pubDate><title>Message #2954040</title><guid isPermaLink="false">2954040@Uncensored</guid><description><![CDATA[ > C does not support nested functions, but c++ does.   
  
 The official C language does not support nested functions, but GCC does.
 I've used them and they're quite convenient, but their use renders your program
nonportable from GCC. 
  
 I also heard that Apple is forking GCC and Samba because Mister Jobs does
not like the GPL3. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953820</link><pubDate>Thu, 24 Mar 2011 16:06:25 +0500</pubDate><title>Message #2953820</title><guid isPermaLink="false">2953820@Uncensored</guid><description><![CDATA[java supports nested classes stupidly. 
  Whoever the fuck had the brilliant idea to use $ as the sub class name separator
was obviously not a unix hack. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953784</link><pubDate>Thu, 24 Mar 2011 14:43:24 +0500</pubDate><title>Message #2953784</title><guid isPermaLink="false">2953784@Uncensored</guid><description><![CDATA[ I don't think C++ supports nested functions, either, and it's been so long,
I can't remember if it supprots nested classes, too. 
  
 I know Java supports nested classes, though. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953772</link><pubDate>Thu, 24 Mar 2011 14:30:05 +0500</pubDate><title>Message #2953772</title><guid isPermaLink="false">2953772@Uncensored</guid><description><![CDATA[ C does not support nested functions, but c++ does. 
  Or maybe I'm thinking nested classes. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953680</link><pubDate>Thu, 24 Mar 2011 12:03:36 +0500</pubDate><title>Message #2953680</title><guid isPermaLink="false">2953680@Uncensored</guid><description><![CDATA[ Take a look at this page: 
  
 http://en.wikipedia.org/wiki/First-class_function 
  
 And also the link in the third paragraph to the "funarg problems" page. 
Those two pages seem to hit on some of what's involved under the covers with
closures vs. nested functions. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953670</link><pubDate>Thu, 24 Mar 2011 11:55:55 +0500</pubDate><title>Message #2953670</title><guid isPermaLink="false">2953670@Uncensored</guid><description><![CDATA[ Nested functions are definitely nice.  I remember using them back in my Pascal
days.  Closures are similar to nested functions, but as I understand it, there
are a few key differences. 
  
 Nested functions don't persist outside the scope in which they are defined.
 i.e. They can only be called from within the enclosing function.  Also, my
guess would be that if you made a pointer to a nested function and tried to
pass it outside the defining scope, the results would be undefined.  The code
itself would most likely be accessible, but if the nested function referenced
any variables outside of its local scope, those references would be undefined.
 If the compiler didn't know what to do, those references would most likely
mess up the caller's stack frame, becuase it would think it was referencing
the stack frame from the defining scope. 
  
 A closure, on the other hand, is supposed to make
sure any references made outside of the local scope are preserved so that
you can save that nested function for later and pass it around wherever you
like and not worry about messing up the caller's stack frame.  This may be
one reason why languages like C and C++ haven't supported nested functions
or closures, because saving the scope and references puts more onus on the
compiler. 
  
 One small tidbit about scope that I remember from C.  Even though you can't
do a nested function, you can arbitrarily limit scope by enclosing statements
in curly braces.  For example: 
  
    int a = 3; 
    { 
        int b = 6; 
        int c; 
  
        c = a + b; 
        printf("%d",c); 
    } 
  
 Both b and c are only accessible inside the curly-braces, but code in side
the curly-braces can reference variable a. 
   Scope Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953252</link><pubDate>Wed, 23 Mar 2011 17:49:48 +0500</pubDate><title>Message #2953252</title><guid isPermaLink="false">2953252@Uncensored</guid><description><![CDATA[Wouldn't it be simpler to just support nested functions?  That seems to be
a clearer way of allowing any variable's scope to cover exactly the amount
of code you want it to. 
  
 It certainly would eliminate a lot of unnecessary jumping through hoops in
situations where global variables are undesirable (threaded programs etc)
and you have to pass scope around to callback functions using a bunch of custom
data structures and a pointer. 
  
 I've *often* wished I could use nested functions in C, and they're supported
by GNU C, but not portable to other compilers.  I seem to remember someone
saying, however, that it the compiler resorts to some dirty assembler tricks
to make it happen. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2953023</link><pubDate>Wed, 23 Mar 2011 10:42:23 +0500</pubDate><title>Message #2953023</title><guid isPermaLink="false">2953023@Uncensored</guid><description><![CDATA[ Loanshark may be better equipped to explain what benefit closures have. 
Like you guys, I've never written code that required the use of closures,
but I think it's handy to know what they are if I ever do come across the
need for one. 
  
 I did a little googling and found this discussion thread, which provided
some more enlightenment for me: 
  
 http://stackoverflow.com/questions/256625/when-to-use-closure 
  
 As one of the posters says, closures seem to be more prevalent in functional
programming languages like Haskell, where the programming paradigm makes it
natural to use closures. 
  
 YMMV. 
   Closure Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2952151</link><pubDate>Mon, 21 Mar 2011 12:48:32 +0500</pubDate><title>Message #2952151</title><guid isPermaLink="false">2952151@Uncensored</guid><description><![CDATA[ yeah, there certainly isn't anything elegant about it. 
  
  They should call it 'flying scope' instead of closure. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2951701</link><pubDate>Sun, 20 Mar 2011 01:40:40 +0500</pubDate><title>Message #2951701</title><guid isPermaLink="false">2951701@Uncensored</guid><description><![CDATA[At the moment I'm inclined to agree with Ford.  I probably don't understand
this fully enough, but from the explanation, closures sound like a crutch
to enable sloppy code. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2951004</link><pubDate>Thu, 17 Mar 2011 22:25:30 +0500</pubDate><title>Message #2951004</title><guid isPermaLink="false">2951004@Uncensored</guid><description><![CDATA[ I've been programming for 30 years and I've never NEEDed a closure. 
  what I NEED are destructors. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2951003</link><pubDate>Thu, 17 Mar 2011 22:24:56 +0500</pubDate><title>Message #2951003</title><guid isPermaLink="false">2951003@Uncensored</guid><description><![CDATA[ > What makes it a closure is that the free variables are "bound" in that
 
 >the next time that inner function is called, regardless of the scope   
 >from which it's called, those variables refer to the proper objects.   
  
  See,  that may be true from a philosophical perspective, but what it really
is, is variables are referenced by the scope of the function so they never
get garbage collected. That's all that's really going on. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2950881</link><pubDate>Thu, 17 Mar 2011 17:10:51 +0500</pubDate><title>Message #2950881</title><guid isPermaLink="false">2950881@Uncensored</guid><description><![CDATA[ This article has a decent explanation: 
  
 http://en.wikipedia.org/wiki/Closure_%28computer_science%29 
  
 As I understand it, closures have to do with "free variables."  In the case
of an inner function, a free variable would be a variable defined in any of
the scopes in the "scope chain" that is referenced inside the inner function.
 What makes it a closure is that the free variables are "bound" in that the
next time that inner function is called, regardless of the scope from which
it's called, those variables refer to the proper objects. 
  
 Essentially, a closure is a code block that can be stored away and called
anytime you need it.  More importantly, though, a closure stores not only
the code, but also the references to non-local variables. 
  
 Honestly, I've only encountered a few situations where I've needed something
like a closure.  However, that may be due to the kind of programming
I do.  Were I doing more event-based programming, for a GUI, for example,
I might see a greater need for closures. 
   Closure Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2950873</link><pubDate>Thu, 17 Mar 2011 16:55:32 +0500</pubDate><title>Message #2950873</title><guid isPermaLink="false">2950873@Uncensored</guid><description><![CDATA[    
 by "in the context of markup" I mean "for some sort of word-processing type
application that needs a markup language"   
  
  
 for everything else, use JSON with a schema validating parser to keep Spell
happy ;) 
  
 (Schemas are meant to be violated :) :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2950872</link><pubDate>Thu, 17 Mar 2011 16:53:28 +0500</pubDate><title>Message #2950872</title><guid isPermaLink="false">2950872@Uncensored</guid><description><![CDATA[ >syntax so unnecessarily bloated for the majority of common data   
 >formats, but there's no debate over its usefulness in the context of   
 >markup.   
  
 But isn't the bloatedness THE debate? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2950871</link><pubDate>Thu, 17 Mar 2011 16:52:18 +0500</pubDate><title>Message #2950871</title><guid isPermaLink="false">2950871@Uncensored</guid><description><![CDATA[    
 Part 2. When dealing with SAX, you only see the tree nodes in document order;
you don't have the option to call getTextContent() on anything other than
a Text event... But that's probably what you want, if you actually NEED to
process mixed content.   
  
  
 STaX might bridge that gap... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2950867</link><pubDate>Thu, 17 Mar 2011 16:49:43 +0500</pubDate><title>Message #2950867</title><guid isPermaLink="false">2950867@Uncensored</guid><description><![CDATA[  
 Ok, I don't have too much time to discuss this, but the DOM is basically
an Abstract Syntax Tree. It differs from the AST you might get out of ANTLR
or somesuch in that it's one level of abstraction higher... you get a level
of syntax checking that <foo> actually matches </foo>, which you normally
wouldn't get from a recursive-descent parser unless it was hand-coded to the
specific DTD/Schema or unless you had some hand-coded validation in place.

  
 <p><b>As such</b>, DOM represents mixed content like this:</p>: 
  
 Element tagName=p 
 -- Element tagName=b 
 ---- Text "As such" 
 -- Text ", DOM represents mixed content like this:" 
  
 If you want to just see "As such, DOM represents mixed content like this",
you can call getTextContent() directly on Element p. If you want to know more
detail, walk the tree structure with getChildNodes(). 
  
 XML's generalized support for mixed content
is exactly what makes its syntax so unnecessarily bloated for the majority
of common data formats, but there's no debate over its usefulness in the context
of markup. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2950863</link><pubDate>Thu, 17 Mar 2011 16:37:51 +0500</pubDate><title>Message #2950863</title><guid isPermaLink="false">2950863@Uncensored</guid><description><![CDATA[ So I was a little bored today and I read up on how closures are implemented
in javascript. 
   It's not quite as bad an ugly as I thought it would be. 
  I still don't like closures, but it's not really all that messy. 
  for everybody except loanshark who probably knows this already and will
correct me when I get something wrong... 
  
  A function in javascript is an object. 
  The object contains a  property called.... "scope" Go figure. 
  It's a reference to the immediate parent context in which it was defined.
If it is a function within a function it gets the scope of the variables and
other stuff available when the inner function was defined. 
  Being an inner function the outer function as well has a scope and this
concept works all the way up the chain to -global- so since everything is
garbage collected as long as a closure exists the garbage collector won't
blow away anything
that exists anywhere in the function's scope ancestry. 
  When a new inner function is made, it's scope is it's parents scope plus
a new local scope context so it all stays tied together in order so when you
resolve variables, you just work your way backwards through the scope chain
until you find your variable name, and voila. 
  And the garbage collector won't eat anything.  
  It's hard to see how the word closure really encapsulates this idea. Nothing
closes around anything. It should be called a "scopechainstaysincontext" 

  But nobody wants to write that all the time. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2940527</link><pubDate>Mon, 07 Mar 2011 14:40:32 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2940527@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mo Mär 07 2011 14:04:23 EST</span> <span>von   Ford II @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Does nobody even QUESTION how fucked up it is in the first place that we have to discuss different bloated libraries as solutions for dealing with it?  <br />It's so plain broken I can't imagine why anybody uses it. It's sole purpose makes no sense. SOAP uses xml in a terribly complicated way so that it becomes unreadable by humans, yet the point of xml is to be at least somewhat human readable. The entire premise is flawed.  <br /></div>
<br /></div>
</blockquote>
<p>the problem is, XML is neither human readable nor machine readable.</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2940505</link><pubDate>Mon, 07 Mar 2011 14:04:23 +0500</pubDate><title>Message #2940505</title><guid isPermaLink="false">2940505@Uncensored</guid><description><![CDATA[ Does nobody even QUESTION how fucked up it is in the first place that we
have to discuss different bloated libraries as solutions for dealing with
it? 
  It's so plain broken I can't imagine why anybody uses it. It's sole purpose
makes no sense. SOAP uses xml in a terribly complicated way so that it becomes
unreadable by humans, yet the point of xml is to be at least somewhat human
readable. The entire premise is flawed. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2940504</link><pubDate>Mon, 07 Mar 2011 14:02:10 +0500</pubDate><title>Message #2940504</title><guid isPermaLink="false">2940504@Uncensored</guid><description><![CDATA[ > Although technically it is well formed, using that kind of tag/data   
 >sequence is just asking for trouble.  A lot of people are going to   
  
 I see this as a (rather major) flaw in xml, you don't see this problem with
name value pair lists. 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2940499</link><pubDate>Mon, 07 Mar 2011 14:00:12 +0500</pubDate><title>Message #2940499</title><guid isPermaLink="false">2940499@Uncensored</guid><description><![CDATA[ > Google is (quietly) beta-testing the new Google OS by giving away   
 >cloud-based netbooks to qualified testers ....   
  
 yeah I signed up for one of those, haven't gotten one yet. 
 But they've already lost my (free) business. A computer that can't function
at all without being able to call home will be most useless when most needed.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2940449</link><pubDate>Mon, 07 Mar 2011 11:52:54 +0500</pubDate><title>Message #2940449</title><guid isPermaLink="false">2940449@Uncensored</guid><description><![CDATA[ Perhaps, yes, but I could counter-argue that programmers using an XML parser
directly need to be aware of situations like this example, otherwise they're
just shooting themselves in the foot.  I realize I'm being a little snide
here, but, I would think that for a large number of applications, it would
be easier to use a DOM library or something similar on top of an XML parser
for retrieving document data.  Certainly there will always be a set of applications
that are better suited to interfacing directly with an XML parser, but, again,
I would argue that those applications are more specialized.  Specialized applications
require specialized skill. 
  
 And I can think of a somewhat trivial example where Ford's scenario might
occur. 
  
 <?xml version="1.0"?> 
 <email> 
   <to>IGnatius T Foobar</to> 
   <from>Spell Binder</from> 
   <subject>An example of mixed-content elements</subject> 

  <body>The <bold>quick</bold> brown <italics>fox</italics> jumps 
   over the <underline>lazy</underline> dog.</body> 
 </email> 
  
 Perhaps somewhat contrived and not an appropriate design choice, but I think
it's a reasonable example. 
   XML Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2939822</link><pubDate>Sat, 05 Mar 2011 20:54:29 +0500</pubDate><title>Message #2939822</title><guid isPermaLink="false">2939822@Uncensored</guid><description><![CDATA[ > AFAIK, Ford's example is well-formed XML.  To make it completely   
 >valid, the DTD would have to specify tag1's type as #PCDATA, or, if it 
 
 >were using an XML schema, tag1 would be have to be declared with <any>.
 
  
 Although technically it is well formed, using that kind of tag/data sequence
is just asking for trouble.  A lot of people are going to provide their parsers
with callbacks that perform specific actions when a closing tag is encountered.
 If a sequence of other tags has been processed in between, then it's likely
that the callbacks will do the wrong thing. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2939088</link><pubDate>Thu, 03 Mar 2011 14:45:16 +0500</pubDate><title>Message #2939088</title><guid isPermaLink="false">2939088@Uncensored</guid><description><![CDATA[ bart: Re: What is WSDL good for? 
  
 If I'm reading you right, you're saying that extensibility is one of the
prime advantages of WSDL and SOAP.  That definitely would be a good advantage.
 It's been a while since I've done coding in a compiled language like C, but
I definitely do remember the issues involved in changing the contents of a
library file that programs depended on.  Even if it was just adding new function
calls, there was still a risk that the change would break the existing programs.

   libBinder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2939086</link><pubDate>Thu, 03 Mar 2011 14:39:26 +0500</pubDate><title>Message #2939086</title><guid isPermaLink="false">2939086@Uncensored</guid><description><![CDATA[ AFAIK, Ford's example is well-formed XML.  To make it completely valid, the
DTD would have to specify tag1's type as #PCDATA, or, if it were using an
XML schema, tag1 would be have to be declared with <any>. 
  
 I've not done much XML programming, so I'm not completely sure how the split
content would be represented.  However, if you were using a DOM library to
access the XML--as opposed to interfacing directly with an XML parser--I would
think that asking for tag1's content would give you a single text item, where
"content1" and "more content1" were concatenated together with a single space
character.  This behavior might be implementation-specific, though, so it
might be a list of two items, or the DOM might return the complete text including
tag2 and it's contents in-line: e.g. "content1<tag2>content2</tag2>more content1"

  
 I'm pretty sure that, no matter how the content would be accessed, asking
for the children of tag1 should return just tag2. 
   DOM Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2939032</link><pubDate>Thu, 03 Mar 2011 12:48:55 +0500</pubDate><title>Message #2939032</title><guid isPermaLink="false">2939032@Uncensored</guid><description><![CDATA[ > Feb 21 2011 3:40pm from Ford II @uncnsrd   
 >  I'm kinda wondering why google hasn't done this yet. Maybe that was  

 >the plan for google desktop but it never got enough traction to be   
 >useful.   
  
 Google is (quietly) beta-testing the new Google OS by giving away cloud-based
netbooks to qualified testers .... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938754</link><pubDate>Thu, 03 Mar 2011 02:19:16 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2938754@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, thats html, not xml. I don't think its legal in xml.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938720</link><pubDate>Wed, 02 Mar 2011 22:55:34 +0500</pubDate><title>Message #2938720</title><guid isPermaLink="false">2938720@Uncensored</guid><description><![CDATA[ But don't you see? xml is just plain broken by design. 
  (pardon me if I'm still fucking furious at google docs) 
  <xml> 
   <tag1> 
      content 1 
     <tag2> 
       content 2 
     </tag2> 
     more content 1 
   </tag1> 
  </xml>  
  
  Look at content 1 and more content 1.  
  
  WHAT THE FUCK IS THAT. How the hell do you parse that into anything meaningful?

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938615</link><pubDate>Wed, 02 Mar 2011 17:12:21 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2938615@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mi Mär 02 2011 15:05:02 EST</span> <span>von   Spell Binder @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Re: WSDL and web services.  <br /><br />There's one thing (well, maybe more than one thing, but I'll start with one) that I'm not sure I get about WSDL and web services, and this might also apply to CORBA's IDL as well.  <br /><br />What's the real point?  <br /><br />What does a formal XML-based description of your APIs really buy you?  If you develop a library, for example, for converting pictures of marshmallows into pictures of toasted marshmallows, you would expect that someone looking for such a service would develop their application towards your API.  In other words, they're going to write their application assuming that certain operations, like foo, bar, and baz, are going to be present.  Given that, the one advantage I can see to something like WSDL or an IDL is that it tells you what data types are being used, so your application can convert to the proper types, if needed.  <br /></div>
<div class="fmout-JUSTIFY"><br /></div>
</div>
</blockquote>
<div class="fmout-JUSTIFY">Its already here, its name is STI (standard transcoding interface) its doing soap with attachments.<br /></div>
<blockquote>
<div class="fmout-JUSTIFY"><br /></div>
<div class="fmout-JUSTIFY">To take this a step further, let's say that you're going to provide a service that already has a standardized API.  That means the operations your service provides, and the parameters they accept and generate are pretty much already defined.  Any application written for that standard API is going to expect those operations to exist, so the service will be written towards that.  Another place where something like WSDL could be useful is in cases where portions of the API or API parameters are optional.  A WSDL document could then let the application know what features are supported.  <br /><br />Is that what it's all about?  Automatic identification and conversion of data types, and the ability to assess a service's feature set?  Or is there supposed to be more to WSDL than that?  <br />DL Binder  <br /></div>
</blockquote>
<p>In general stuff like soap or IDL was intended to provide an interface between proprietary software.</p>
<p>IDL/Corba was a victum of open half baked standards with interoperability problems and design by comite.</p>
<p>$employer has its own implementation, even with some licensees.</p>
<p>Its right now used to scale stuff across several boxes or to include external libs in its own component.</p>
<p>Right now it introduces the natural problems, that network roundtrips are expensive.</p>
<p>so, scalability is bought at the cost of performance (not as much as if you use for example tomcat ;-)</p>
<p>SOAP was introduced by microsoft to get rid of stuff like IDL, COM or whatever else middleware shit was in their way.</p>
<p>for some reason the java community took on the soap stuff pretty well, maybe because of they like xml and the concept of scaling at the cost of performance ;-)</p>
<p>SOAP has one big advantage: you can extend interfaces, and talk to remote parts that don't use / have this extension yet.</p>
<p>this isn't possible with IDL, since once you have it and you have external components relieing on your IDL, its carved in stone.</p>
<p> </p>
<p>while IDL was intended to</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938562</link><pubDate>Wed, 02 Mar 2011 15:05:02 +0500</pubDate><title>Message #2938562</title><guid isPermaLink="false">2938562@Uncensored</guid><description><![CDATA[ Re: WSDL and web services. 
  
 There's one thing (well, maybe more than one thing, but I'll start with one)
that I'm not sure I get about WSDL and web services, and this might also apply
to CORBA's IDL as well. 
  
 What's the real point? 
  
 What does a formal XML-based description of your APIs really buy you?  If
you develop a library, for example, for converting pictures of marshmallows
into pictures of toasted marshmallows, you would expect that someone looking
for such a service would develop their application towards your API.  In other
words, they're going to write their application assuming that certain operations,
like foo, bar, and baz, are going to be present.  Given that, the one advantage
I can see to something like WSDL or an IDL is that it tells you what data
types are being used, so your application can convert to the proper types,
if needed. 
  
 To take this a step further,
let's say that you're going to provide a service that already has a standardized
API.  That means the operations your service provides, and the parameters
they accept and generate are pretty much already defined.  Any application
written for that standard API is going to expect those operations to exist,
so the service will be written towards that.  Another place where something
like WSDL could be useful is in cases where portions of the API or API parameters
are optional.  A WSDL document could then let the application know what features
are supported. 
  
 Is that what it's all about?  Automatic identification and conversion of
data types, and the ability to assess a service's feature set?  Or is there
supposed to be more to WSDL than that? 
   DL Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938554</link><pubDate>Wed, 02 Mar 2011 14:52:16 +0500</pubDate><title>Message #2938554</title><guid isPermaLink="false">2938554@Uncensored</guid><description><![CDATA[ Ford: I definitely have not drunk the XML Kool-Aid(TM). 
  
 I can see it's advantages over HTML, and there are a number of places where
XML is definitely a better choice than some alternatives, but, like everything
else, it's just one of many tools.  If it's not the right tool, then I won't
use it. 
  
 For example, I was considering using XML for a project here at work to describe
details of the various hardware platforms we have to test.  However, after
some thinking about how this information will be generated and used, I'm leaning
more towards a domain-specific language (DSL) for the task.  I don't know
yet if I can find an existing language that meets our needs (that would be
great) or if I'll have to develop one.  However, I don't think XML will be
the right choice; the users who will have to generate the data may not be
very familiar with XML, though there is a structure to the data,
it's not as clear-cut as XML would like it to be (nor would it fit very well
in relational database, maybe an object database, but the datasaet is way
too small to require a DBMS), and it would be a lot of effort to develop a
custom tool with a nice front-end UI so the users wouldn't have to muck with
the XML. 
   DSL Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938328</link><pubDate>Wed, 02 Mar 2011 07:32:13 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2938328@Uncensored</guid><description><![CDATA[<html><body>

<p>spell, I was just a little trolling.</p>
<p>WSDLs are just sort of CORBA-IDL expressed in XML. and, of course WSDL is just a bunch of DTDs.</p>
<p>btw, I like what you can do with SOAP-UI.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938197</link><pubDate>Tue, 01 Mar 2011 21:25:43 +0500</pubDate><title>Message #2938197</title><guid isPermaLink="false">2938197@Uncensored</guid><description><![CDATA[ > Anyway, if you control both ends of the link you can just send   
 >whatever tags you want and ignore the need for any formal   
 >specification, but I realize that's a *very* loose and casual way of   
 >handling things.   
  
 Except that nowadays, you probably have to be able to jam your protocol through
an http proxy. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938196</link><pubDate>Tue, 01 Mar 2011 21:25:03 +0500</pubDate><title>Message #2938196</title><guid isPermaLink="false">2938196@Uncensored</guid><description><![CDATA[ > Referencing opaque binary data via a URI is an interesting approach,  

 >but what do you do when your document absolutely needs to be   
 >self-contained? I ended up using Base 64, but that still seemed like a 
 
 >less than optimal solution.   
  
 There's mime for that. Mime sucks too, but nowhere near as bad as xml for
what it's trying to do. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938195</link><pubDate>Tue, 01 Mar 2011 21:24:07 +0500</pubDate><title>Message #2938195</title><guid isPermaLink="false">2938195@Uncensored</guid><description><![CDATA[ >off-the-shelf parser to check for well-formedness, but, if you spend   
 >the time to develop thorough document type definitions (DTDs) for   
 >everything you want to represent, the parser can also validate data for
 
 >you.  Then you can not only catch simple encoding or tag errors, but   
 >you can catch structural errors as well.   
  
  Oh god, you've all drunk that shit. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938082</link><pubDate>Tue, 01 Mar 2011 16:29:40 +0500</pubDate><title>Message #2938082</title><guid isPermaLink="false">2938082@Uncensored</guid><description><![CDATA[Isn't it cool that the word "schema" shares a lot of characters with the word
"schmeep" ? 
  
 Anyway, if you control both ends of the link you can just send whatever tags
you want and ignore the need for any formal specification, but I realize that's
a *very* loose and casual way of handling things. 
  
 When XML first showed up on the scene it was painted as this sort of magic
fairy dust that would make every program automatically know how to parse any
data format without any work whatsoever! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2938028</link><pubDate>Tue, 01 Mar 2011 14:55:57 +0500</pubDate><title>Message #2938028</title><guid isPermaLink="false">2938028@Uncensored</guid><description><![CDATA[ bart: I'm a little confused when you say that we have WSDL due to DTD's shortcomings.
 From what I understand, WSDL is used for specifying web APIs (essentially),
whereas a DTD is designed as a validation tool for any XML document. 
  
 Were you perhaps thinking about XML schemas, which WSDL uses to describe
API messages?  If so, I can definitely agree with you.  From what I've read,
XML schemas definitely have much more flexibility than a DTD, and they can
be used in place of a DTD for validation purposes. 
   Schema Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2937881</link><pubDate>Tue, 01 Mar 2011 11:12:27 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2937881@Uncensored</guid><description><![CDATA[<html><body>

<p>oh, and wrap everything into a mime structure.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2937880</link><pubDate>Tue, 01 Mar 2011 11:12:02 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2937880@Uncensored</guid><description><![CDATA[<html><body>

<p>thats where the XML usually switches over to have attachments which are just referenced inside of the XML by attachment id.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2937823</link><pubDate>Tue, 01 Mar 2011 09:31:14 +0500</pubDate><title>Message #2937823</title><guid isPermaLink="false">2937823@Uncensored</guid><description><![CDATA[The place I'm finding it useful is when you don't quite know the structure
of the data ahead of time, or if you need to keep the data format compatible
between different versions of the same application even if the data format
changes somewhat.  I recently used it as a serialization format when faced
with that type of situation, for example. 
  
 If the data is fixed-format and highly structured -- then I still think the
good old format of using lines of delimited fields is still the way to go.

  
 Referencing opaque binary data via a URI is an interesting approach, but
what do you do when your document absolutely needs to be self-contained? 
I ended up using Base 64, but that still seemed like a less than optimal solution.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2937528</link><pubDate>Mon, 28 Feb 2011 17:40:42 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2937528@Uncensored</guid><description><![CDATA[<html><body>

<p>and because of dtd's shortcommings we've got wsdl.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2937516</link><pubDate>Mon, 28 Feb 2011 17:13:44 +0500</pubDate><title>Message #2937516</title><guid isPermaLink="false">2937516@Uncensored</guid><description><![CDATA[ I can see some advantages to XML as well.  Not only can you grab an off-the-shelf
parser to check for well-formedness, but, if you spend the time to develop
thorough document type definitions (DTDs) for everything you want to represent,
the parser can also validate data for you.  Then you can not only catch simple
encoding or tag errors, but you can catch structural errors as well. 
  
 Despite that, though, I'm still with Ford and bart in that any large chunk
of opaque binary data should be kept well away from XML.  Make a tag that
lets you reference that object via a URI instead of trying to include it in
the document.  Then it becomes the application's job to fetch it instead of
the parser, and the application can more likely than not make smarter decisions
about what to do. 
   XML Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2937462</link><pubDate>Mon, 28 Feb 2011 16:01:22 +0500</pubDate><title>Message #2937462</title><guid isPermaLink="false">2937462@Uncensored</guid><description><![CDATA[  
 I've noticed something. 
  
 After all these years I've actually started warming up to XML. 
  
 Yeah, I know, someone needs to start slapping me with a wet noodle until
I come to my senses again.  I can't help but observe, however, that XML relieves
a developer from having to write parsers, and if the supplied data causes
the parser to throw an error, it's *always* the sender's fault. 
  
 See also: "not IMAP" 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2934659</link><pubDate>Tue, 22 Feb 2011 11:31:29 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2934659@Uncensored</guid><description><![CDATA[<html><body>

<p>Google still offers those day-glo servers that you can put in your own data center to "enhance" your site's searchability, but I don't think as many people need them now that they've made it easy to submit sitemaps.  Pretty much every CMS in the world has the ability to generate a sitemap.xml now, and all of the search engines use the same format.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2934288</link><pubDate>Mon, 21 Feb 2011 15:40:17 +0500</pubDate><title>Message #2934288</title><guid isPermaLink="false">2934288@Uncensored</guid><description><![CDATA[  I'm kinda wondering why google hasn't done this yet. Maybe that was the
plan for google desktop but it never got enough traction to be useful. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2933617</link><pubDate>Sun, 20 Feb 2011 01:53:51 +0500</pubDate><title>Message #2933617</title><guid isPermaLink="false">2933617@Uncensored</guid><description><![CDATA[Now that's an idea ... cable and phone companies using the deployed set top
boxen to force every subscriber to [be a part of a distributed storage network.
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2931976</link><pubDate>Wed, 16 Feb 2011 14:53:21 +0500</pubDate><title>Message #2931976</title><guid isPermaLink="false">2931976@Uncensored</guid><description><![CDATA[as more and more of the traffic on the web becomes download on demand, bittorrent
is going to be the protocol of choice, so yallz better get used to it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2931975</link><pubDate>Wed, 16 Feb 2011 14:52:37 +0500</pubDate><title>Message #2931975</title><guid isPermaLink="false">2931975@Uncensored</guid><description><![CDATA[ >Heh.  Look on the bright side, LS: the EBCDIC dinosaur is at least at  

  
   How much of the ASCII table can you fill from memory? 256 points for getting
it all right. 
  Now... how much of the ebcdic table can you fill from memory? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2931974</link><pubDate>Wed, 16 Feb 2011 14:50:59 +0500</pubDate><title>Message #2931974</title><guid isPermaLink="false">2931974@Uncensored</guid><description><![CDATA[ > EBCDIC.   
  
 That's funny. 
   Although just yesterday I found out about a project we're having trouble
testing because our old vax which this project has to interface with can only
accept 3 letter codes to denote a client whereas all our new clients use 4
letter codes and all the new software doesn't care what lengths the client
IDs are but the vax can only handle 3 character ids. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2930101</link><pubDate>Sat, 12 Feb 2011 23:09:51 +0500</pubDate><title>Message #2930101</title><guid isPermaLink="false">2930101@Uncensored</guid><description><![CDATA[ROPE doesn't work anymore?  I'm guessing the bittorrent client developers
have worked as hard as they can to make the initial handshake look as much
as possible like an ordinary HTTP request. 
  
 If you have the privilege of being the BOFH firewall admin, perhaps it's
time to capture all port 80 traffic and send it to a nazi-proxy. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2930071</link><pubDate>Sat, 12 Feb 2011 21:04:42 +0500</pubDate><title>Message #2930071</title><guid isPermaLink="false">2930071@Uncensored</guid><description><![CDATA[  
 heh. 
  
 In other news... fucking bittorrent. It's apparently pretty hard to block
these days. OpenWRT has some capabilities, but not enough. :-( 
  
 (Normally, I wouldn't care, but there are some people in our share house
who haven't gotten the message that if they keep leeching, we're going to
lose our internet access.) 
  
 Sandvine has the right idea, but is priced out of reach. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2929861</link><pubDate>Sat, 12 Feb 2011 09:38:48 +0500</pubDate><title>Message #2929861</title><guid isPermaLink="false">2929861@Uncensored</guid><description><![CDATA[Heh.  Look on the bright side, LS: the EBCDIC dinosaur is at least at the
point where some people have to look it up.  :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2928919</link><pubDate>Thu, 10 Feb 2011 10:29:30 +0500</pubDate><title>Message #2928919</title><guid isPermaLink="false">2928919@Uncensored</guid><description><![CDATA[<html><body>

<p>For those that dont speak in acronyms:</p>
<p>EBCDIC:  http://bit.ly/CCC34</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2928746</link><pubDate>Thu, 10 Feb 2011 00:19:58 +0500</pubDate><title>Message #2928746</title><guid isPermaLink="false">2928746@Uncensored</guid><description><![CDATA[  
 Ok, my current project requires... 
  
 [drum roll] 
  
 EBCDIC. 
  
 Yea, definitely should have stayed put ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2921474</link><pubDate>Wed, 26 Jan 2011 09:56:26 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2921474@Uncensored</guid><description><![CDATA[<html><body>

<p>Recently, I was forced to realize the importance of a collation call-out (or lack thereof) in a MSSQL query in PHP.......</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2920659</link><pubDate>Mon, 24 Jan 2011 22:21:35 +0500</pubDate><title>Message #2920659</title><guid isPermaLink="false">2920659@Uncensored</guid><description><![CDATA[yeah I heard that too and it sounded a little fishy. 
  Probably google doing that cut-the-bottom-5% thing. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2920235</link><pubDate>Mon, 24 Jan 2011 08:26:25 +0500</pubDate><title>Message #2920235</title><guid isPermaLink="false">2920235@Uncensored</guid><description><![CDATA[ >  For all of these 500 programmers throwing shit over the wall every   
 >few days... where is it? At this rate there should be a few hundred   
 >thousand features or tools or functions or something. I dont' see it.  

  
 And that's why I am not buying into the whole "Google is not the cool place
to work anymore, all the hot talent is going to Facebook" hype.  Facebook
is huge but it isn't really cutting-edge.  If you're a genius with a PhD in
complex stuff engineering, why would you go looking for work at what basically
amounts to a giant BBS written in PHP? 
  
 Netscape at one time made a transition from a place where people went to
build something great, to a place where people went to work because it was
already great.  If Facebook has already made that transition then it does
not bode well for the company.  At least Google has a business model. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2919272</link><pubDate>Fri, 21 Jan 2011 15:18:17 +0500</pubDate><title>Message #2919272</title><guid isPermaLink="false">2919272@Uncensored</guid><description><![CDATA[ > ... and the MS investment valued those users at $300 a pop.   
  
  I'd guess that MS office users are valued at more than that. They should
invest their money in microsoft. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2919271</link><pubDate>Fri, 21 Jan 2011 15:17:51 +0500</pubDate><title>Message #2919271</title><guid isPermaLink="false">2919271@Uncensored</guid><description><![CDATA[ > Jan 19 2011 3:56pm from LoanShark @uncnsrd   
 > >sad actually.     
 >    
 > ?   
 >   
 >  
  
   Well as you point out, that guy was guessing a lot and a lot of what he
guessed at was wrong, I wouldn't take too much value in the 'facts' in that
post. 
  I added a comment, but basically the sad is that for all of their zillions
of developers whether they throw things over the wall or go through some kind
of development process, they're all php programmers, and I can't have a hell
of a lot of respect for that.  
   There's a few guys working on scalability and the javascript munger but
I read somewhere that the vast majority of fb programmers are php guys. And
that's why they made the php compiler rather than stop and reimplement everything
in a real language. 
  I give them credit for their scalability, which now that I think about it
is probably done by mass duplication of data rather
than any smart indexing scheme or something like that and lots of hardware
thrown all over the place. 
  I have a lot of not nice things to say about google, but I have never questioned
their technical ability.  
  
  For all of these 500 programmers throwing shit over the wall every few days...
where is it? At this rate there should be a few hundred thousand features
or tools or functions or something. I dont' see it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2918789</link><pubDate>Thu, 20 Jan 2011 16:37:16 +0500</pubDate><title>Message #2918789</title><guid isPermaLink="false">2918789@Uncensored</guid><description><![CDATA[ >No test or stage environment, just throw new code at some of the users 
 
 >and see what happens.   
  
 A/B testing is -very- important for a site that has to generate revenue,
but that's not the way to do it. 
  
 If you read further down the article, there are some contradictory claims:
Facebook doesn't QA! No wait, yeah they do! *shrug* 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2918788</link><pubDate>Thu, 20 Jan 2011 16:35:55 +0500</pubDate><title>Message #2918788</title><guid isPermaLink="false">2918788@Uncensored</guid><description><![CDATA[  
 ... and the MS investment valued those users at $300 a pop. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2918330</link><pubDate>Wed, 19 Jan 2011 18:14:45 +0500</pubDate><title>Message #2918330</title><guid isPermaLink="false">2918330@Uncensored</guid><description><![CDATA[No test or stage environment, just throw new code at some of the users and
see what happens. 
  
 Not surprising. 
  
 Of course, the article mistakenly refers to the site itself as the company's
product.  The site is not the product, and its users are not the customers.
 The users are the product, and its advertisers and other revenue sources
are the customers. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2918280</link><pubDate>Wed, 19 Jan 2011 15:56:42 +0500</pubDate><title>Message #2918280</title><guid isPermaLink="false">2918280@Uncensored</guid><description><![CDATA[ >sad actually.   
  
 ? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2918275</link><pubDate>Wed, 19 Jan 2011 15:42:23 +0500</pubDate><title>Message #2918275</title><guid isPermaLink="false">2918275@Uncensored</guid><description><![CDATA[sad actually. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2918104</link><pubDate>Wed, 19 Jan 2011 08:54:05 +0500</pubDate><title>Message #2918104</title><guid isPermaLink="false">2918104@Uncensored</guid><description><![CDATA[<html><body>

<p>http://framethink.wordpress.com/2011/01/17/how-facebook-ships-code/</p>
<p>interesting.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917941</link><pubDate>Tue, 18 Jan 2011 22:17:08 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2917941@Uncensored</guid><description><![CDATA[What's with the sudden flurry of ASN.1 fandom?  ASN.1 is the primary reason
why the "L" in LDAP is a pathetic joke. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917925</link><pubDate>Tue, 18 Jan 2011 20:55:21 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2917925@Uncensored</guid><description><![CDATA[ >give wireshark the asn1 description, and you're done. Don't know  
 >whether you need to recompile or not, but most of wiresharks protocol  
 >analyzers are done with asn.1  
  
 ASN.1 is a parse tree, not a sentence. Even with that, it's not going to
be as human-readable as a DSL. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917829</link><pubDate>Tue, 18 Jan 2011 16:03:18 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2917829@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Di Jan 18 2011 14:13:54 EST</span> <span>von   LoanShark @ Uncensored </span> <span class="message_subject">Betreff: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>there are wireshark pulgins to make them human readable.   <br /></blockquote>
<br />Clearly this discussion is about the implementation of new protocols as well. Do you really want to have to write your own wireshark plugin just to have a chance of understanding something you designed yourself?  <br /></div>
<br /></div>
</blockquote>
<p>give wireshark the asn1 description, and you're done. Don't know whether you need to recompile or not, but most of wiresharks protocol analyzers are done with asn.1</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917789</link><pubDate>Tue, 18 Jan 2011 14:14:31 +0500</pubDate><title>Message #2917789</title><guid isPermaLink="false">2917789@Uncensored</guid><description><![CDATA[ >  Now I'm in the camp of: client commands to the server should be ascii
 
 >but data should be binary esp if there's a lot of it. And http fits   
 >that pretty well.   
  
 +1 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917788</link><pubDate>Tue, 18 Jan 2011 14:13:54 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2917788@Uncensored</guid><description><![CDATA[ >there are wireshark pulgins to make them human readable.  
  
 Clearly this discussion is about the implementation of new protocols as well.
Do you really want to have to write your own wireshark plugin just to have
a chance of understanding something you designed yourself? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917346</link><pubDate>Mon, 17 Jan 2011 14:34:38 +0500</pubDate><title>Message #2917346</title><guid isPermaLink="false">2917346@Uncensored</guid><description><![CDATA[It's much easier to troubleshoot a protocol that allows you to telnet to the
port and type commands to the server.  HTTP is mostly a win in that regard.

  
 And yes, IMAP succeeded in terms of being the standard for client/server
access to mailboxes.  Pretty much every fat-client other than Outlook uses
it.  Believe it or not, the whole world has *not* migrated to webmail. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917270</link><pubDate>Mon, 17 Jan 2011 12:24:06 +0500</pubDate><title>Message #2917270</title><guid isPermaLink="false">2917270@Uncensored</guid><description><![CDATA[ > There is a reason why protocols should be mostly human-readable:   
 >people have to develop in them.   
  
  People should use debuggers. 
  
  It took me a while but I've finally caved on the everything should be binary.

  Now I'm in the camp of: client commands to the server should be ascii but
data should be binary esp if there's a lot of it. And http fits that pretty
well. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917269</link><pubDate>Mon, 17 Jan 2011 12:22:41 +0500</pubDate><title>Message #2917269</title><guid isPermaLink="false">2917269@Uncensored</guid><description><![CDATA[ > (Just don't ask me why IMAP succeeded.)   
  
 Did it? I stopped caring much about pop4 because it was pretty obvious to
me that webmail kinda did away with the need for imap. 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917120</link><pubDate>Mon, 17 Jan 2011 02:35:32 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2917120@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>So Jan 16 2011 23:23:04 EST</span> <span>von   LoanShark @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />Complaining about bandwidth inefficiency in HTTP strikes me as rather misguided. <br /><br /><br /><br />It's just a few bytes in the header. Supports binary transfer modes. On the whole, quite effiecient.  <br /><br />There is a reason why protocols should be mostly human-readable: people have to develop in them.  <br /></div>
<br /></div>
</blockquote>
<p>there are wireshark pulgins to make them human readable.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2917101</link><pubDate>Sun, 16 Jan 2011 23:23:04 +0500</pubDate><title>Message #2917101</title><guid isPermaLink="false">2917101@Uncensored</guid><description><![CDATA[    
 Complaining about bandwidth inefficiency in HTTP strikes me as rather misguided.
  
  
  
 It's just a few bytes in the header. Supports binary transfer modes. On the
whole, quite effiecient. 
  
 There is a reason why protocols should be mostly human-readable: people have
to develop in them. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2916729</link><pubDate>Sat, 15 Jan 2011 20:06:42 +0500</pubDate><title>Message #2916729</title><guid isPermaLink="false">2916729@Uncensored</guid><description><![CDATA[The win with HTTP is its simplicity.  Simplicity always wins.  It's the same
reason SIP became the standard for VoIP even though H.323 predated it by a
long time. 
  
 (Just don't ask me why IMAP succeeded.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2916290</link><pubDate>Fri, 14 Jan 2011 16:24:33 +0500</pubDate><title>Message #2916290</title><guid isPermaLink="false">2916290@Uncensored</guid><description><![CDATA[ http isn't ideal but it's far far better than just about everything else.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2916109</link><pubDate>Fri, 14 Jan 2011 10:48:20 +0500</pubDate><title>Message #2916109</title><guid isPermaLink="false">2916109@Uncensored</guid><description><![CDATA[  
 asn.1 is not particularly easy to use. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2915552</link><pubDate>Thu, 13 Jan 2011 07:48:27 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2915552@Uncensored</guid><description><![CDATA[um ... what?    
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2915517</link><pubDate>Thu, 13 Jan 2011 04:26:43 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2915517@Uncensored</guid><description><![CDATA[<html><body>

<p>plus it doesn't have any kind of RFC attached to it, which it should.</p>
<p>plus, it also does require HTTP again, which is waste of bandwith.</p>
<p>plus, it most probably can be expressed in ASN.1, and is therefore redundand.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2915154</link><pubDate>Wed, 12 Jan 2011 11:54:51 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2915154@Uncensored</guid><description><![CDATA[With web services, switching to a better format involves getting the people
who write the clients to agree to use it.  If you can distribute client libraries,
that's great, but it does make life difficult for folks who don't really want
to keep grafting on lots of libraries for every little thing... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2914270</link><pubDate>Mon, 10 Jan 2011 19:14:03 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2914270@Uncensored</guid><description><![CDATA[ >if you want a better alternative, use ASN1.  
  
 It's been said before, but: http://hessian.caucho.com/ 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2911358</link><pubDate>Tue, 04 Jan 2011 13:13:54 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2911358@Uncensored</guid><description><![CDATA[<html><body>

<blockquote>
<div class="message_header"><span>Di Jan 04 2011 12:32:41 EST</span> <span>von   Ford II @ Uncensored </span> <span class="message_subject">Betreff: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">yay, lets propogate the mess even more.  <br /></div>
</div>
</blockquote>
<p>I prefer mess about chatty bullshit.</p>
<p>plus, json has one advance above xml: its utf8 by default which eases parser creation.</p>
<p>if you want a better alternative, use ASN1.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2911320</link><pubDate>Tue, 04 Jan 2011 12:32:41 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2911320@Uncensored</guid><description><![CDATA[yay, lets propogate the mess even more. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2911185</link><pubDate>Tue, 04 Jan 2011 07:58:48 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2911185@Uncensored</guid><description><![CDATA[<html><body>

<p>just waiting how long it will take to have a standardization to access other parts of a surrounding mime container from json.</p>
<p>that'd be the only good reason for soap to continue to exist the way it is now.</p>
<p>wsdl already managed to become interpretation agnostic; nowadays you can describe also non-xml based structures with it.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2911176</link><pubDate>Tue, 04 Jan 2011 07:38:18 +0500</pubDate><title>Message #2911176</title><guid isPermaLink="false">2911176@Uncensored</guid><description><![CDATA[But it compresses well! 
  
 <ducks> 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2911054</link><pubDate>Mon, 03 Jan 2011 23:09:55 +0500</pubDate><title>Message #2911054</title><guid isPermaLink="false">2911054@Uncensored</guid><description><![CDATA["XML is a data format not a human interface (it's a parse tree rather 
than a sentence). I cannot stand typing/reading XML. Remember, being an 
expert in XML is like being an expert in comma separated values. Cracks 
me up that there are conferences on this data format."

--Terence Parr, author of ANTLR, 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2911053</link><pubDate>Mon, 03 Jan 2011 23:08:18 +0500</pubDate><title>Message #2911053</title><guid isPermaLink="false">2911053@Uncensored</guid><description><![CDATA[ > Jan 3 2011 6:42pm from dothebart @uncnsrd   
 >starting to hate c++.   
  
 A little late to the party, no? 
  
 <Nelson>Haha!</Nelson> 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910981</link><pubDate>Mon, 03 Jan 2011 18:42:27 +0500</pubDate><title>Message #2910981</title><guid isPermaLink="false">2910981@Uncensored</guid><description><![CDATA[<html><body>

<p>starting to hate c++.</p>
<p>was examing nodejs.org and znc to find out how they use c-ares.</p>
<p>its that hard to read, you have to know 5 places to understand whats going on in one.</p>
<p>basicaly I first failed because of I didn't test whether the  migration libevent -&gt; libev was successfull *GNGN*</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910599</link><pubDate>Sun, 02 Jan 2011 21:53:00 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2910599@Uncensored</guid><description><![CDATA[ > Tha language on its own is actually quite nice.   
  
  I used to think it the most disgusting thing I've ever been forced to use,
but then somebody pointed out that javascript is the new basic.  
  It's the best way to teach a child how to program. 
  And then I thought about how shitty basic is, and realized I don't have
much firm ground to stand on when bitching about javascript so since I learned
on basic.  
   
 basic didn't have closures though, and I have to give it a lot of credit
for that. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910598</link><pubDate>Sun, 02 Jan 2011 21:50:36 +0500</pubDate><title>Message #2910598</title><guid isPermaLink="false">2910598@Uncensored</guid><description><![CDATA[ >space and perform backtracking. So if you have to analyze a large     
 >amount of data under backtracking, these might be more efficient. But  
  
 >for typical business OLTP problems, not so much.     
    
  Okay, I can see that (although I'll go with that might thing as well because
there are plenty of ways to optomize all sorts of data algorythms, right?)
but how much of the real world use of computers is ever any of that mythological
shit that acedemics spend so much time and energy making proof of concepts
for?   
  
  I'm not saying never do it, but I just can't see so much of a market that
there needs to be more than 1 niche player.  
  
  But that's a sweeping generalizaion based on little actual information so
I won't go on about that too much, :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910597</link><pubDate>Sun, 02 Jan 2011 21:47:16 +0500</pubDate><title>Message #2910597</title><guid isPermaLink="false">2910597@Uncensored</guid><description><![CDATA[ >result is even more un-readable than you might have imagined. (They are
 
 >using some JAXB-type XML binding system, so it generates xsi:type   
 >everywhere instead of using actual tag names to distinguish data   
 >types.)   
  
  I flipped out so much when I started seeing xsi everywhere that I didn't
even bother to find out what it was. 
  so now they've taken xml which was supposed to be human readable, and made
it unreadable, so it serves no purpose as well as serving no purpose. Or any
other purpose for that matter. 
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910506</link><pubDate>Sun, 02 Jan 2011 14:02:14 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2910506@Uncensored</guid><description><![CDATA[ > You could say that ECMAScript is actually a different language than   
 >JavaScript... it's that subset which is standardized.   
  
 True.  On the other hand, when most people think of "JavaScript" what they
have in mind is ECMAscript plus the DOM, or in other words, the client-side
browser scripting environment. 
  
 Tha language on its own is actually quite nice. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910420</link><pubDate>Sun, 02 Jan 2011 08:25:37 +0500</pubDate><title>Message #2910420</title><guid isPermaLink="false">2910420@Uncensored</guid><description><![CDATA[ >  I never understood the point of handicapping yourself with something 
 
 >as fundamental as storage (or rather, without storage)   
  
 They're always slower for common algorithms... but if you get into the motivation
for the optimizations this guy made, they're targeting at algorithms that
choose branchpoints along the lifetime of the persistent structure and repeatedly
examine different states of the structure. In other words, algorithms that
need to search a solution space and perform backtracking. So if you have to
analyze a large amount of data under backtracking, these might be more efficient.
But for typical business OLTP problems, not so much. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910417</link><pubDate>Sun, 02 Jan 2011 08:17:50 +0500</pubDate><title>Message #2910417</title><guid isPermaLink="false">2910417@Uncensored</guid><description><![CDATA[ >  The argument starts with how fucking stupid xml is. For example why  

 >make a bandwidth intensive protocol that is human readable when most of
 
 >the time a computer is going to generate it and a computer is going to 
 
 >read it.   
  
 Not exactly human readable. Remember that discussion we had 3-6 months ago
when I was looking at LINQ and considering using XML as a serialization protocol
for query expression ASTs? You said I was drinking kool-aid, and I wound up
agreeing. 
  
 Well, Siebel (now known as OBIEE) ***actually does this***, and the result
is even more un-readable than you might have imagined. (They are using some
JAXB-type XML binding system, so it generates xsi:type everywhere instead
of using actual tag names to distinguish data types.) 
  
 Sometimes a keyword syntax (built with ANTLR, for instance) is just The Right
Thing To Do. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910416</link><pubDate>Sun, 02 Jan 2011 08:12:48 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2910416@Uncensored</guid><description><![CDATA[ >anyways, the official name is 'ECMA-Script' after all, right?  
  
 You could say that ECMAScript is actually a different language than JavaScript...
it's that subset which is standardized. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910321</link><pubDate>Sat, 01 Jan 2011 20:17:10 +0500</pubDate><title>Message #2910321</title><guid isPermaLink="false">2910321@Uncensored</guid><description><![CDATA[ > Purely Functional Data Structures (some guy's PhD thesis, PDF)   
  
  I never understood the point of handicapping yourself with something as
fundamental as storage (or rather, without storage) 
  I realize that I'm being hypocritical somewhat becaue you could argue back
that the fact that I don't use any C++ features created after 1985 or so is
like handicapping myself for no reason, but there are some obvious lines to
draw. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910318</link><pubDate>Sat, 01 Jan 2011 20:07:40 +0500</pubDate><title>Message #2910318</title><guid isPermaLink="false">2910318@Uncensored</guid><description><![CDATA[ But wait I wasn't done. 
  Code generators. 
  
  So the damn thing never worked anyway. 
  But why on earth do we need a program to generate code so that we can use
a nother program to compile it so it can generate xml that another computer
will have to parse out. 
   There are so many layers of useless shit in that process (which explains
why it never works) that there's really no chance of success. You have to
get so many things lined up to make it work the chances of it not conflicting
with something else are zero. 
  Everybody designs and builds these stupid tools assuming everything is always
written in a sandbox isolated from all other systems where the environemtn
can be defined exactly the way it needs. 
  And this is never the case. 
  Ever. 
  
  
  MS invented "dll hell" a decade or two ago (and I know it existed long before
then) yet here we are, sun actually managed to invent
a brand new technology and get it adopted by the world at large and they did
absolutely fucking NOTHING to try and solve this problem. 
  Assholes, all of them. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2910316</link><pubDate>Sat, 01 Jan 2011 20:04:11 +0500</pubDate><title>Message #2910316</title><guid isPermaLink="false">2910316@Uncensored</guid><description><![CDATA[ > Spoken like a man who's never built a custom annotation with Spring   
 >AOP.   
  
  You know me so well. 
  
   
 I've had a bad cold for the past few days and it's not a throat one, it's
a stuffy head one so I haven't been thinking straight, but I had an idea and
 I haven't flushed it out completely because I'm still sick but there's basically
something wrong with code generators. 
  The argument starts with how fucking stupid xml is. For example why make
a bandwidth intensive protocol that is human readable when most of the time
a computer is going to generate it and a computer is going to read it. 
  Just fucking insane. Not even getting to how fucked up xml is by design
anyway. 
  
  But here' my new thought: 
  A coworker is writing some code to call a webservice. 
  The 3rd party company who's service we are calling supplied her with a wdsl
file. 
  She ran all those stupid tools
and generated a fuckload of code that we'll never use so that we can call
a function and wait a long fucking time for a response. 
  
  As it turned like (like every other case I've ever seen of trying to call
a webservice the 'right' way (as opposed to just hard coding the soap call
you need to generate)) it didn't work in production. 
  worked from the command line because we were able to put everything we needed
(and of course there was quite a bit )on the class path. 
  But the webserver has it's own classpath and there's a library in our iplanet
7 webserver that supplies jaxb 2.0 and thus does not allow us to unclude a
jaxb2.1 jar file so the thing just can't work. 
  And it's not just a matter of replacing one jar with another because the
jaxb 2.0 suport is shoved in with a bunch of other things in this one big
jar file and I'm not going to fuck around with the webserver setup like
that.   
  Apparently jaxb 2.1 became standard with java 6 update 4 or something like
that and we're running update 2 and of course updating is a big fucking hassle
just to make this one stupid soap call. 
  
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2901702</link><pubDate>Sat, 01 Jan 2011 11:05:24 +0500</pubDate><title>Message #2901702</title><guid isPermaLink="false">2901702@Uncensored</guid><description><![CDATA[<html><body>

<p>oh, and now that i've decided to switch from libevent to libev for performance reasons, I've found more reasons to do so: its threadsafe and allows to have several event loops in your program in several simultaneous threads; so if libev is going to become the master of our FDs in some uncertain future, we're mounting the right horse here.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2901701</link><pubDate>Sat, 01 Jan 2011 11:02:26 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2901701@Uncensored</guid><description><![CDATA[<html><body>

<p>heh... probably as silly as gemaltos legal office has taken the chance to prove itself as usefully by attacking google with some patents they did about java running on embedded devices in the 90ies.</p>
<p>my current guess (and hopes though employed there):  those patents will go void.</p>
<p>and since 'java' is a word for coffee and we have trademarks here and trademarks are a little different, I think there is no big point in starting legal actions here except for over-pricing the attacked entity...</p>
<p>anyways, the official name is 'ECMA-Script' after all, right?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2901699</link><pubDate>Sat, 01 Jan 2011 10:55:03 +0500</pubDate><title>Message #2901699</title><guid isPermaLink="false">2901699@Uncensored</guid><description><![CDATA[I wonder how long it'll be before Oracle decides that the use of the word
"Java" in JavaScript is a trademark violation and sues all of the browser
makers? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2901651</link><pubDate>Sat, 01 Jan 2011 08:03:00 +0500</pubDate><title>Message #2901651</title><guid isPermaLink="false">2901651@Uncensored</guid><description><![CDATA[<html><body>

<p>interesting...  the ruby community also starts to drift into the direction of http://nodejs.org/ :</p>
<p>http://news.ycombinator.com/item?id=1533243</p>
<p>(i'm currently plugging some of nodes foundation libraries into citserver; libev and c-ares...)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2896547</link><pubDate>Fri, 31 Dec 2010 08:19:55 +0500</pubDate><title>Message #2896547</title><guid isPermaLink="false">2896547@Uncensored</guid><description><![CDATA[  
 Purely Functional Data Structures (some guy's PhD thesis, PDF) 
  
 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.62.505 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2896367</link><pubDate>Thu, 30 Dec 2010 18:56:27 +0500</pubDate><title>Message #2896367</title><guid isPermaLink="false">2896367@Uncensored</guid><description><![CDATA[ > Java has clearly jumped the shark with annotations.   
  
 Spoken like a man who's never built a custom annotation with Spring AOP.

  
 *runs* 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2890470</link><pubDate>Mon, 20 Dec 2010 18:48:17 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2890470@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mo Dez 20 2010 14:20:16 EST</span> <span>von   Ford II @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Java has clearly jumped the shark with annotations.  <br />I'd go on a rant about it, but you already know what I'm going to say.  <br />I'm just surprised somebody hasn't written a recursive fibonacci figured-outer with annotations rather like has been done with the C precompiler.  <br /></div>
<br /></div>
</blockquote>
<p>they call it code generators these days.</p>
<p>google for "don't repeat yourself" aka dry</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2890330</link><pubDate>Mon, 20 Dec 2010 14:20:16 +0500</pubDate><title>Message #2890330</title><guid isPermaLink="false">2890330@Uncensored</guid><description><![CDATA[ Java has clearly jumped the shark with annotations. 
  I'd go on a rant about it, but you already know what I'm going to say. 
  I'm just surprised somebody hasn't written a recursive fibonacci figured-outer
with annotations rather like has been done with the C precompiler. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2887666</link><pubDate>Wed, 15 Dec 2010 21:29:47 +0500</pubDate><title>Message #2887666</title><guid isPermaLink="false">2887666@Uncensored</guid><description><![CDATA[ > http://adtmag.com/articles/2010/12/15/apache-quits-jcp.aspx    
    
  
  Frankly, I think I side with oracle on this one, not that I think oracle
is right, but I do so dislike what apache is doing more and more. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884572</link><pubDate>Thu, 09 Dec 2010 06:12:21 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2884572@Uncensored</guid><description><![CDATA[<html><body>

<p>you probably should have a look at what cirrus does with xscoar.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884480</link><pubDate>Wed, 08 Dec 2010 23:49:24 +0500</pubDate><title>Message #2884480</title><guid isPermaLink="false">2884480@Uncensored</guid><description><![CDATA[you all know I'm not a big fan of autoconf and automake and all that and I
just realized another reason why it's not great: crosscompiling. 
  it only works if you're autoconfing on the machine you're building on and
building for. 
  Maybe I'm the only one stupid enough to try and get joe to build and run
on my g1, but the makefile and autoconf.h that it made were largely wrong
and useless. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884454</link><pubDate>Wed, 08 Dec 2010 22:42:53 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2884454@Uncensored</guid><description><![CDATA[ yes and I always thought that was rather stupid. Kinda like objective C,
oh if we support it, we'll handle it, if we don't we won't.  
  Real handy for the guy trying to write the program. 
  
  Anyway. I was just a little surprised that even pointers were 32 bit, but
I guess it makes sense, I've just been spoiled by big hardare for the past
bunch of years I forgot how it used to be. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884370</link><pubDate>Wed, 08 Dec 2010 19:07:16 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2884370@Uncensored</guid><description><![CDATA[<html><body>

<p>c just says, long &gt;= int &gt;= word....</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884344</link><pubDate>Wed, 08 Dec 2010 17:49:34 +0500</pubDate><title>Message #2884344</title><guid isPermaLink="false">2884344@Uncensored</guid><description><![CDATA[ today I learned that on android an int a long and a pointer are all 4 bytes.

  Go figure. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884280</link><pubDate>Wed, 08 Dec 2010 15:25:23 +0500</pubDate><title>Message #2884280</title><guid isPermaLink="false">2884280@Uncensored</guid><description><![CDATA[ > Everybody follows   
 > Speedy bits exchange   
 > Stars await to glow   
  
  So that's why it takes so long to make an oracle connection. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2884229</link><pubDate>Wed, 08 Dec 2010 13:12:21 +0500</pubDate><title>Message #2884229</title><guid isPermaLink="false">2884229@Uncensored</guid><description><![CDATA[  
 Everybody follows 
 Speedy bits exchange 
 Stars await to glow 
  
 (stolen without permission) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2882489</link><pubDate>Sat, 04 Dec 2010 21:22:15 +0500</pubDate><title>Message #2882489</title><guid isPermaLink="false">2882489@Uncensored</guid><description><![CDATA[ls: you can't dissapoint me... you know EVERYthing. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2882488</link><pubDate>Sat, 04 Dec 2010 21:21:55 +0500</pubDate><title>Message #2882488</title><guid isPermaLink="false">2882488@Uncensored</guid><description><![CDATA[never heard of crystax, but I'll chjeck it out, thanks. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2882455</link><pubDate>Sat, 04 Dec 2010 17:59:45 +0500</pubDate><title>Message #2882455</title><guid isPermaLink="false">2882455@Uncensored</guid><description><![CDATA[  
 Ford, all I know is that used to be handled in collect2. If they didn't test
the feature in their version of collect2, it's probably broken... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2882391</link><pubDate>Sat, 04 Dec 2010 14:02:04 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2882391@Uncensored</guid><description><![CDATA[<html><body>

<p>19:49 @dothebart: cirrus: wo hastn du deinen android cross compiler toolchain her? aus embedian?<br />19:50 @cirrus: das offizielle ndk, bzw. der fork von crystax mit aktivierter libstdc++</p>
<p>-&gt; using the NDK / the fork of crystax with activated libstdc+</p>
<p>which is probably what you need too, ford.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2882386</link><pubDate>Sat, 04 Dec 2010 13:34:58 +0500</pubDate><title>Message #2882386</title><guid isPermaLink="false">2882386@Uncensored</guid><description><![CDATA[ I'll let ls figure this out and explain it to me: 
   
  So I'm having problems linking my C++ program with the android cross compiler
gcc. Apparently they have a slightly modified version of gcc? I dunno. 
  Anyway, I narrowed it down to virtual destructors. 
  Then I found this : http://zedcode.blogspot.com/2007/02/gcc-c-link-problems-on-small-embedded.html

  guy has exact same problems.   
 His solution is to supply an overriding delete operator because he doesn't
use new and delete. Gets rid of his linker problem. 
  Doesn'ty solve my problem though because I need to delete things. 
  What I'm actually going to do is remove my inhereted class and just make
the class I need (listen to me, i'm listening to myself, all that reuse stuff
is bullshit!) 
  One of the things I read said basically that the android c++ compiler supports
just enough to compile webkit and that's it. 
   
  Which
is a) dumb, but b) cool because it again proves my argument that if you keep
things simple you'll be better off. Almost all my code compiles in this crippled
compiler, except for the one thing I started to get complex with.  
    
  There's at least one guy having a hell of a time trying to get boost to
build. Good luck to him. Probably shouldn't be running boost on a phone anyway
(at least not yet) 
   
  
 So perhaps I answered my own question: basically the crippled compiler doesn't
support inheretence. 
   
 So I can either find a better cross compiler and fight to the death to get
a build kit that works on android, or the much more simple option: get rid
of my inheretence. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2882369</link><pubDate>Sat, 04 Dec 2010 12:47:36 +0500</pubDate><title>Message #2882369</title><guid isPermaLink="false">2882369@Uncensored</guid><description><![CDATA[(Spell is still waiting for a computing environment implemented completely
in Smalltalk.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2881533</link><pubDate>Thu, 02 Dec 2010 13:05:38 +0500</pubDate><title>Message #2881533</title><guid isPermaLink="false">2881533@Uncensored</guid><description><![CDATA[ I haven't played around with Haskell too much, yet, but I've been researching
on ways to incorporate certain features of Haskell into TCL.  Mainly because
TCL is what we use for the bulk of our automated test scripts where I work.

  
 I should see if there's an expect library for Haskell, though I get the feeling
I'd want to have myself committed if I saw how it was implemented.  If there
is one, though, it would make an interesting experiment to port a couple of
our test scripts into Haskell. 
   Spell 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2881251</link><pubDate>Wed, 01 Dec 2010 20:08:18 +0500</pubDate><title>Message #2881251</title><guid isPermaLink="false">2881251@Uncensored</guid><description><![CDATA[ >Subject: Haskell Researchers Announce Discovery of Industry Programmer Who
Gives a Shit    
 >Comments    
 >    
 >    
 >http://steve-yegge.blogspot.com/2010/12/haskell-researchers-announce-d 
  
 >iscovery.html    
    
  
  Stolen right out of the onion. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2880707</link><pubDate>Tue, 30 Nov 2010 20:24:47 +0500</pubDate><title>Message #2880707</title><guid isPermaLink="false">2880707@Uncensored</guid><description><![CDATA[ I love being behind the curve, I got hello world to run on my g1 in about
5 minutes. 
  Now... what to do next.... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2880518</link><pubDate>Tue, 30 Nov 2010 12:39:52 +0500</pubDate><title>Message #2880518</title><guid isPermaLink="false">2880518@Uncensored</guid><description><![CDATA[ Oh so I didn't explain the solution. 
  
  It turns out that you have to define the data store as having n columns
of X type of data which I was doing. 
  
  But you ALSO have to define the tree view as having n number of columns
of X type of data. And the menu option to set it, isn't all that obvious,
so I didn't know you could even set it let alone that it had to be set at
all. 
  
  Why couldn't the treeview just take its design from the data model? Too
fucking simple for the developer obviously. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2880517</link><pubDate>Tue, 30 Nov 2010 12:37:32 +0500</pubDate><title>Message #2880517</title><guid isPermaLink="false">2880517@Uncensored</guid><description><![CDATA[ So with the help of the wonderful people at stackoverflow I got it working.
    
      
  http://stackoverflow.com/questions/4307786/glade-treeview-liststore-data-not-v
  isible-cant-imagine-why      
      
   And what I realize is this: once again somebody has missed the boat.  
  
    
  GTK is all powerful and lets you do anything. The treeview class is infinitely
configurable and customizable so that you can have variable width and height
and user-drawable items in it.   
    
  But the fact is nobody's going to use any of that shit, and mostly people
just want a list box with text items in it.   
  so rather than design it for the 99% use case of adding text items to a
list, they design it so that you have to go through ALL the hell just to get
a listbox.   
  why not instead design for the simple case and allow for the complex case
by making that part hard.   
     
    
  But at least I can add to my list now.   
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2880009</link><pubDate>Mon, 29 Nov 2010 16:19:02 +0500</pubDate><title>Message #2880009</title><guid isPermaLink="false">2880009@Uncensored</guid><description><![CDATA[ I've almost given up with gtkmm. Good documentation or bad, it just shouldn't
be this hard. 
  Details for anybody who cares. 
  They include a very powerful treeview that can do simple lists as well.

  So I got it all set up, using glade, you can define the list and the list
data, you can even put data in the xml file to render on startup. 
  Brilliant. But nothing comes up. 
  Why? Near as I can tell, there's a cell renderer, a type of which gets assigned
to your column as you add it (or in this case as gtkbuilder adds it) to the
treeview. And when you define your list you can tell it what type of data
is in the list so gtk can pick the best kind of cellrenderer to use to draw
your data. 
  Well, your options for what classes of data are allowed are volumnious and
useless. You do get a gchararray (which for other reasons is the only one
tha works.) 
  But when you call treeview->get_column_cell_renderer()
you get NULL which means nothing was defined for ytou. 
   And I can't find any way to add one once a column has been created. 
  Not to mention that glade lets you add types to your list store that it
knows damn well it won't be able to render. 
   Gargh. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2878660</link><pubDate>Thu, 25 Nov 2010 14:17:51 +0500</pubDate><title>Message #2878660</title><guid isPermaLink="false">2878660@Uncensored</guid><description><![CDATA[Maybe he should change careers, grow a beard, and become the official replacement
for Billy Mays. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2878444</link><pubDate>Wed, 24 Nov 2010 23:05:15 +0500</pubDate><title>Message #2878444</title><guid isPermaLink="false">2878444@Uncensored</guid><description><![CDATA[  
 He's far better at search engine optimization than he is at DB optimization.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2878406</link><pubDate>Wed, 24 Nov 2010 20:41:45 +0500</pubDate><title>Message #2878406</title><guid isPermaLink="false">2878406@Uncensored</guid><description><![CDATA[Getting some unwanted help optimizing that database? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2878376</link><pubDate>Wed, 24 Nov 2010 18:07:17 +0500</pubDate><title>Message #2878376</title><guid isPermaLink="false">2878376@Uncensored</guid><description><![CDATA[  
 Attn UCG: 
  
 Don Burleson needs to GO AWAY. 
  
 That is all. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2875482</link><pubDate>Wed, 17 Nov 2010 04:04:50 +0500</pubDate><title>Message #2875482</title><guid isPermaLink="false">2875482@Uncensored</guid><description><![CDATA[<html><body>

<p>http://stacksmashing.net/2010/11/15/cracking-in-the-cloud-amazons-new-ec2-gpu-instances/</p>
<p>lol.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2874825</link><pubDate>Mon, 15 Nov 2010 18:49:37 +0500</pubDate><title>Message #2874825</title><guid isPermaLink="false">2874825@Uncensored</guid><description><![CDATA[  
 Yeah, I'm pretty screwed. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2874531</link><pubDate>Mon, 15 Nov 2010 09:43:08 +0500</pubDate><title>Message #2874531</title><guid isPermaLink="false">2874531@Uncensored</guid><description><![CDATA[I hear the real estate business isn't very hot right now. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2873678</link><pubDate>Fri, 12 Nov 2010 23:24:49 +0500</pubDate><title>Message #2873678</title><guid isPermaLink="false">2873678@Uncensored</guid><description><![CDATA[  
 the state machine poem is herein incorporated by reference. 
  
 dealing with a heinous one right now. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2871744</link><pubDate>Tue, 09 Nov 2010 09:35:23 +0500</pubDate><title>Message #2871744</title><guid isPermaLink="false">2871744@Uncensored</guid><description><![CDATA[<html><body>

<p>cookies why not - an interesting read:</p>
<p>http://lcamtuf.blogspot.com/2010/10/http-cookies-or-how-not-to-design.html</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2870083</link><pubDate>Fri, 05 Nov 2010 11:55:54 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2870083@Uncensored</guid><description><![CDATA[<html><body>

<p>thunderbird is definitely an example for a not that bad imap client which wasn't derived from an adoption of an older pop3 client. Outlook is for example, which is why bynari replaces it entirely.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2870051</link><pubDate>Fri, 05 Nov 2010 10:31:04 +0500</pubDate><title>Message #2870051</title><guid isPermaLink="false">2870051@Uncensored</guid><description><![CDATA[ > is that an IMAP thing where they ask for it in chunks?   
  
 Yeah, you can do something like "XX FETCH XX BODY<yy.zz>" where yy is the
starting position and zz is the number of bytes you want it to send.  Thunderbird
uses this to fetch a message in 10 KB chunks, and presumably they process
it the same way they'd process a message fetched with POP3. 
  
 If I were writing a client I'd probably do the same thing.  It would certainly
reduce the possible number of compatibility problems. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869834</link><pubDate>Thu, 04 Nov 2010 21:59:15 +0500</pubDate><title>Message #2869834</title><guid isPermaLink="false">2869834@Uncensored</guid><description><![CDATA[ So I got my first button to do something in my gtk program, and while they
did a wonderful job in C++ifying the api, there's a gaping wound in the design.

  The whole glade->gtkbuilder is brilliant and works beautifully. 
  And in C you can say "go bind all my controls to my callback handlers" and
magic voila it just does it. 
  and you can probably still do that in C++ if you extern "C" everything.

  But the Right way to do it would be to get the actually button object (that
gtkbuilder magically made for you) and set it's callback to a member function
of a subclass that you made of it. 
  Except you can't do that. Not your class, you didn't instantiate it, and
you don't even get the opportunity to do anything until long long after the
button has been created. 
  This was not well thought it. 
  out. 
   So far I've seen nothing and nobody's been able to explain to me the 'right'
way of
doing it, and I think the answer is that there isn't one, which sucks, because
otherwise it's a nice framework. 
   
  Although I have to give credit to MS here, their layout program as it pertains
to size and shape and resizing and alignment and all that blows away the fucked
up packing that gtk has. 
  I see what they were getting at with their packing, and it does do good
things, but it's nowhere near as intuitive as the .NET stuff. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869645</link><pubDate>Thu, 04 Nov 2010 15:48:02 +0500</pubDate><title>Message #2869645</title><guid isPermaLink="false">2869645@Uncensored</guid><description><![CDATA[ is that an IMAP thing where they ask for it in chunks? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869518</link><pubDate>Thu, 04 Nov 2010 11:59:01 +0500</pubDate><title>Message #2869518</title><guid isPermaLink="false">2869518@Uncensored</guid><description><![CDATA[That sounds rude.  I'd sooner ask for the message in chunks (which Thunderbird
happens to do -- 10 KB at a time) and stop reading those chunks when I'm satisfied
that I have what I need. 
  
 On the other hand, it's that kind of thing that forces even more complexity.
 I had to hack the server to keep the most recently requested message in a
memory cache to avoid having to fetch it from disk again every time the client
requests another chunk. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869470</link><pubDate>Thu, 04 Nov 2010 10:16:21 +0500</pubDate><title>Message #2869470</title><guid isPermaLink="false">2869470@Uncensored</guid><description><![CDATA[ well if you were slick, you could read and parse the message along the way
and could know when you've got the message before you downloaded the whole
thing and then just hang up on the server... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869236</link><pubDate>Wed, 03 Nov 2010 17:19:35 +0500</pubDate><title>Message #2869236</title><guid isPermaLink="false">2869236@Uncensored</guid><description><![CDATA[That's pretty much how Thunderbird does it.  The other option is to use somebody
else's well-tested client library, if you have that option available to you.

  
 Unfortunately, IMAP is a good fit for mobiles because you *can* do things
like just reading a message text without first having to download large binaries
such as attachmnents first. 
  
 If the protocol were being developed today it would quite obviously be done
with XML.  Whether or not that is an improvement is left as an exercise to
the reader.  :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869200</link><pubDate>Wed, 03 Nov 2010 16:13:29 +0500</pubDate><title>Message #2869200</title><guid isPermaLink="false">2869200@Uncensored</guid><description><![CDATA[ The easiest way to implement a imap client is to just suck the whole message
down from the server and use all the code you have for your pop3 client to
parse out the message and show attachments and whatnot. 
  Asking for an entire message isn't that hard. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869194</link><pubDate>Wed, 03 Nov 2010 15:58:26 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2869194@Uncensored</guid><description><![CDATA[<html><body>

<p>yep, even my samsung outdoor mobile has an imap client. (B2700) it seems as if most mobiles like imap, because of you can specify which chunk you want to see, so they can better handle their tight memory conditions...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2869182</link><pubDate>Wed, 03 Nov 2010 15:38:10 +0500</pubDate><title>Message #2869182</title><guid isPermaLink="false">2869182@Uncensored</guid><description><![CDATA[IMAP is far from dead and gone.  We'd like it to be, but it's here to stay.
 The majority of corporate users are still using fat clients, and the number
of IMAP connections is actually going *up* now that mobile is everywhere.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868813</link><pubDate>Tue, 02 Nov 2010 18:37:03 +0500</pubDate><title>Message #2868813</title><guid isPermaLink="false">2868813@Uncensored</guid><description><![CDATA[<html><body>

<p>ranting about IMAP... evolution won't read as much as it needs to work with if we don't send it in one chunk. WTF?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868779</link><pubDate>Tue, 02 Nov 2010 17:06:17 +0500</pubDate><title>Message #2868779</title><guid isPermaLink="false">2868779@Uncensored</guid><description><![CDATA[  
 Personally, I've always used POP3. IMAP is slow, and I don't like putting
the server underwater with the size of my spam box. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868776</link><pubDate>Tue, 02 Nov 2010 16:53:03 +0500</pubDate><title>Message #2868776</title><guid isPermaLink="false">2868776@Uncensored</guid><description><![CDATA[ > So I remember from years and years ago, last time I heard this debate,
 
 >that I got the impression that what you guys didn't like about IMAP was
 
 >that it was sort of like parsing a full programming language. But at   
 >the time, I didn't have the conceptual framework I do now, so I may   
 >have misread you. It's happened before.   
  
  I actually didn't have to parse imap the guy at IBM I was working with (also
the guy on the working group team) had to do that, good luck to him, he dug
his own grave. 
  I just had to do the back end and there were plenty of goofy implementation
things you had to do to get the information you could possibly ask for given
the rather goofy nature of the protocol. 
  I rather figured imap was dead and gone considering all the bandwidth available
nowadays and that lots of people use webmail anyway. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868775</link><pubDate>Tue, 02 Nov 2010 16:51:03 +0500</pubDate><title>Message #2868775</title><guid isPermaLink="false">2868775@Uncensored</guid><description><![CDATA[  In pop4 I used a dot notation to get at subparts, and it's quite possible
I stole that from imap. I just don't remember. 
  But since you're working your way down and don't have to work your way back
out once you've gotten the one part you want you don't need recursion or anything
fancy to make it work. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868637</link><pubDate>Tue, 02 Nov 2010 12:57:17 +0500</pubDate><title>Message #2868637</title><guid isPermaLink="false">2868637@Uncensored</guid><description><![CDATA[I got away with avoiding a recursive grammar because my MIME parser uses callbacks,
so as *it* recurses into messages it just keeps firing off callbacks that
output parentheses and stuff. 
  
 For a client I wouldn't have  been able to get away with that. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868383</link><pubDate>Mon, 01 Nov 2010 22:11:22 +0500</pubDate><title>Message #2868383</title><guid isPermaLink="false">2868383@Uncensored</guid><description><![CDATA[ > Nov 1 2010 9:28pm from Ford II @uncnsrd     
 > I think imap can specify that at least in terms of getting at parts of
   
 >nested messages nested in messages nested in messages and so on.     
    
 Depending on what needs to be expressed, there are ways of expressing that
sort of thing without requiring the use of a recursive grammar. You might
be able to get away with looping grammar constructs instead.   
    
 For example (I might be talking out of my ass here) a nested message part
might be expressed as a path expression, ala java;   
  
  
 object.property.nestedproperty 
  
 Obviously, this can in the right circumstances be parsed with just split(.).
This is because "." is an infix operator. But if we defined the path navigation
operator as a prefix operator, then we need a full recursive descent parser.

  
  Naively, one might think that prefix operators are always better from
a parsing perspective, but I'm uncovering cases where that's not necessarily
true; an infix syntax can sometimes have greater parsing strength at a lower
computational complexity level. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868380</link><pubDate>Mon, 01 Nov 2010 22:02:36 +0500</pubDate><title>Message #2868380</title><guid isPermaLink="false">2868380@Uncensored</guid><description><![CDATA[ >  Consider crispin: could he parse that? Probably not.   
  
 So I remember from years and years ago, last time I heard this debate, that
I got the impression that what you guys didn't like about IMAP was that it
was sort of like parsing a full programming language. But at the time, I didn't
have the conceptual framework I do now, so I may have misread you. It's happened
before. 
  
 I've been studying ANTLR lately. Very nice parser generator. When I was in
high school, I remember a brief attempt at trying to learn BISON, and not
really being able to (at the time, everything written on the subject on the
internet was in text files, and just used this awful (S) (S) (S) (S) notation
to describe parsing random symbol S. Not a good intro.) ANTLR solv shortens
the learning curve. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868369</link><pubDate>Mon, 01 Nov 2010 21:32:38 +0500</pubDate><title>Message #2868369</title><guid isPermaLink="false">2868369@Uncensored</guid><description><![CDATA[ So I got the shell of my first gtk program running. I have to give them a
lot of credit for getting a lot for writing a little code. 
  But on the downside it's a good thing you don't have to write much code,
because it's really hard to figure out what you need to write. 
  I imagine if I glazed over the entire api for hours and hours a pattern
would start to emerge, but just to write a simple program with a few buttons,
not so easy. 
  
  I did however get a window to popup and have the program exit when you close
the window, so I'm well on my way. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868368</link><pubDate>Mon, 01 Nov 2010 21:28:47 +0500</pubDate><title>Message #2868368</title><guid isPermaLink="false">2868368@Uncensored</guid><description><![CDATA[ I think imap can specify that at least in terms of getting at parts of nested
messages nested in messages nested in messages and so on. 
  But that doesn't come up very often. 
  I don't remember too much anymore, but I don't think imap has much of that.

   
  Consider crispin: could he parse that? Probably not. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868307</link><pubDate>Mon, 01 Nov 2010 18:33:17 +0500</pubDate><title>Message #2868307</title><guid isPermaLink="false">2868307@Uncensored</guid><description><![CDATA[  
 Whatever works. If all you need is a lexer, then: all you need is a lexer.
Does the grammar include recursive structures, such as arbitrarily nested
parenthetical expressions? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868288</link><pubDate>Mon, 01 Nov 2010 17:58:23 +0500</pubDate><title>Message #2868288</title><guid isPermaLink="false">2868288@Uncensored</guid><description><![CDATA[I wouldn't even call my server's code a parser.  It basically just tokenizes
every command into an array and uses a jump table to hand off different commands
to functions that handle them. 
  
 http://code.citadel.org/cgit.cgi/git.citadel.org/tree/citadel/modules/imap/serv_imap.c
would be a reasonable starting point if you want to read through it, but again,
I don't make any claims to having written brilliant code here. 
  
 In defense of it, however, as Pulse once pointed out, no matter what approach
you take to writing an IMAP server or client, you'll keep hitting points where
you turn a corner and find out that some weird aspect of the protocol requires
doing something ugly to your code. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868277</link><pubDate>Mon, 01 Nov 2010 17:25:22 +0500</pubDate><title>Message #2868277</title><guid isPermaLink="false">2868277@Uncensored</guid><description><![CDATA[ >http://www.antlr.org/pipermail/antlr-interest/2004-May/007839.html   
  
 THat's a good start, but there's more. 
  
  For example and I quote "there's no move command because in mark crispins
implementation it would have to be implemented as a copy and delete anyway
so there's no point."  
   
  That came from a guy on the imap working group. 
  
  I hope all those fuckers are dead. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868252</link><pubDate>Mon, 01 Nov 2010 16:09:29 +0500</pubDate><title>Message #2868252</title><guid isPermaLink="false">2868252@Uncensored</guid><description><![CDATA[  
 IG, what kind of parser are you implementing for the protocol's, err, "grammar."
Recursive descent? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868238</link><pubDate>Mon, 01 Nov 2010 15:52:28 +0500</pubDate><title>Message #2868238</title><guid isPermaLink="false">2868238@Uncensored</guid><description><![CDATA[My biggest problems with IMAP are, in no particular order: 
  
 * The protocol's grammar is designed in such a way that it's very easy to
introduce parser problems on both the client and server side.  For example,
even as recently as last week we had to make an adjustment to our IMAP server
to eliminate a space that fell between two parenthesized tokens because that
was causing one particular client to crash. 
  
 * The data model it represents is closely tied to UW-IMAP data store.  The
whole thing with UID's combined with a UIDVALIDITY value to represent a unique
message is utterly absurd to the rest of the world, for example.  Ford will
undoubtedly chime in with his standard rant about the absence of a command
to move a message from one folder to the other, and how he was told that "effectively
it would end up being a copy plus a delete anyway" even when the rest of us
have more efficient
data stores than that. 
  
 * There are several ways of doing the same thing, for example when you fetch
a message there's RFC822 vs. BODYSTRUCTURE etc. etc.  What was he thinking?
 
  
 Crispin was in the right place at the right time.  No one would have accepted
IMAP otherwise. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868196</link><pubDate>Mon, 01 Nov 2010 14:31:20 +0500</pubDate><title>Message #2868196</title><guid isPermaLink="false">2868196@Uncensored</guid><description><![CDATA[  
 OK... http://www.antlr.org/pipermail/antlr-interest/2004-May/007839.html

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2868180</link><pubDate>Mon, 01 Nov 2010 14:01:35 +0500</pubDate><title>Message #2868180</title><guid isPermaLink="false">2868180@Uncensored</guid><description><![CDATA[    
 Opening up a can of worms perhaps,   
  
  
 What's the standard rant on IMAP around here? It's been a while since I've
heard it. We all know IMAP sucks, why does it suck? (Other than poor performance.)

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2865357</link><pubDate>Mon, 25 Oct 2010 13:15:08 +0500</pubDate><title>Message #2865357</title><guid isPermaLink="false">2865357@Uncensored</guid><description><![CDATA[Google customizes your searches and knows that you find Citadel interesting.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2865273</link><pubDate>Mon, 25 Oct 2010 10:11:39 +0500</pubDate><title>Message #2865273</title><guid isPermaLink="false">2865273@Uncensored</guid><description><![CDATA[<html><body>

<p>Fancy. while searching for usage of cunit, the 4th hit is a checkout of libcitadel:</p>
<p>http://www.google.com/search?q=CU_ASSERT</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2864577</link><pubDate>Fri, 22 Oct 2010 21:55:38 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2864577@Uncensored</guid><description><![CDATA[ >  At least in java/vb/whatever you use your object and it's there.   
 >Period.   
  
 Java objects are neither pointers or references, they are just *there*. 
  
 Ooooohhhhhmmmmm... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2864480</link><pubDate>Fri, 22 Oct 2010 15:36:20 +0500</pubDate><title>Message #2864480</title><guid isPermaLink="false">2864480@Uncensored</guid><description><![CDATA[  I remember the checkboxes and Xes, and you could tell it was a borland built
program that way. 
  And you could tell how quickly borland fell out of favor as those checks
and Xes quickly started showing up then even more quickly going away. 
  heh. I miss the good old borland. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2864354</link><pubDate>Fri, 22 Oct 2010 13:33:24 +0500</pubDate><title>Message #2864354</title><guid isPermaLink="false">2864354@Uncensored</guid><description><![CDATA[ >  Nobody bought me the borland mess (which if I remmber right wasn't   
 >much more brilliant than MS's implementation) but my job bought my the 
 
  
 Yeah, but behold! It had green check marks for all your Ok buttons, and red
X's for all your cancel buttons. 
  
 Also, a silly little poorly documented language extension called DDVT's,
Dynamic Dispatch Virtual Tables. The idea was that you could assign a number
to every virtual function, instead of just a name, and they dispatched on
the numbers to forward windows events to you. It was easy to override these
functions, but I could never figure out how to actually call one by number;
apparently, that magic was reserved for some little inline assembler hack
inside their event loop. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863996</link><pubDate>Fri, 22 Oct 2010 11:31:18 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2863996@Uncensored</guid><description><![CDATA[ >smart pointers are just here to corrupt your coding style, as garbage  
 >collection is.   
 >  
 >if you don't know when you don't have use of your object anymore,  
 >your code is just in bad shape and you should go and do visual  
 >basic<fullstop>  
  
 Actually smart pointers are worse. The fact that you even have the ability
to ask a pointer if it is valid or not, let alone the idea that you might
actually use that feature makes the whole idea insane. 
  Like you say, if you don't know if you have access to your object anymore
you're fucked, and asking a pointer if its still valid is not a good way to
solve that problem. 
  At least in java/vb/whatever you use your object and it's there. Period.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863993</link><pubDate>Fri, 22 Oct 2010 11:29:17 +0500</pubDate><title>Message #2863993</title><guid isPermaLink="false">2863993@Uncensored</guid><description><![CDATA[ > Do they? Is that only if you resize the window really abormally     
 >slowly, or something?     
    
  What I mean is if you resize the window of a vb program, everything stays
in place anchored to the top left of the window.   
  In gtk everything moves proportionally to the new size.   
  The reason I think it looks weird is because if you have a window with 2
buttons and a text box, and you make it really big, the buttons stay the same
size and there's just lots and lots of space around them.   
  
  But definetly a better thing to do than the VB way. 
  But again, not a fair comparison, maybe they've done more since 1996. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863992</link><pubDate>Fri, 22 Oct 2010 11:27:36 +0500</pubDate><title>Message #2863992</title><guid isPermaLink="false">2863992@Uncensored</guid><description><![CDATA[ > I stopped at the Borland Foundation Whateverthefuckyoucallit, so that 
 
 >makes you one notch more mainstream than me, apparently.   
  
  Nobody bought me the borland mess (which if I remmber right wasn't much
more brilliant than MS's implementation) but my job bought my the MS windows
3.1 sdk so that's what I learned. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863991</link><pubDate>Fri, 22 Oct 2010 11:26:28 +0500</pubDate><title>Message #2863991</title><guid isPermaLink="false">2863991@Uncensored</guid><description><![CDATA[ > http://www.gtkmm.org/en/   
  
 Very cool. I'm going to go play with that today. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863952</link><pubDate>Fri, 22 Oct 2010 09:33:49 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2863952@Uncensored</guid><description><![CDATA[<html><body>

<p>smart pointers are just here to corrupt your coding style, as garbage collection is.</p>
<p>if you don't know when you don't have use of your object anymore, your code is just in bad shape and you should go and do visual basic&lt;fullstop&gt;</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863929</link><pubDate>Fri, 22 Oct 2010 08:31:24 +0500</pubDate><title>Message #2863929</title><guid isPermaLink="false">2863929@Uncensored</guid><description><![CDATA[...and longcat is loooooooooooong.  I wonder what is the value of sizeof(longcat)
? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863833</link><pubDate>Fri, 22 Oct 2010 00:17:46 +0500</pubDate><title>Message #2863833</title><guid isPermaLink="false">2863833@Uncensored</guid><description><![CDATA[ >  SMART POINTERS! is effective!   
  
 Smart pointer is smart! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863832</link><pubDate>Fri, 22 Oct 2010 00:16:21 +0500</pubDate><title>Message #2863832</title><guid isPermaLink="false">2863832@Uncensored</guid><description><![CDATA[ >is brilliant, and explains why gtk programs look and act funny when you
 
 >resize the window.   
  
 Do they? Is that only if you resize the window really abormally slowly, or
something? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863831</link><pubDate>Fri, 22 Oct 2010 00:14:26 +0500</pubDate><title>Message #2863831</title><guid isPermaLink="false">2863831@Uncensored</guid><description><![CDATA[  
 I stopped at the Borland Foundation Whateverthefuckyoucallit, so that makes
you one notch more mainstream than me, apparently. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863827</link><pubDate>Thu, 21 Oct 2010 23:33:46 +0500</pubDate><title>Message #2863827</title><guid isPermaLink="false">2863827@Uncensored</guid><description><![CDATA[Ask and ye shall receive. 
  
 http://www.gtkmm.org/en/ 
  
 " gtkmm is the official C++ interface for the popular GUI library GTK+.Highlights
include typesafe callbacks, and a comprehensive set of widgets that are easily
extensible via inheritance. You can create user interfaces either in code
or with the Glade User Interface designer, using Gtk::Builder. There's extensive
documentation, including API reference and a tutorial. " 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863745</link><pubDate>Thu, 21 Oct 2010 17:15:47 +0500</pubDate><title>Message #2863745</title><guid isPermaLink="false">2863745@Uncensored</guid><description><![CDATA[ In other news, I wrote my first gtk program today so far a lot simpler thatn
than windows, but it's not a fair comparison because I stopped writing windows
programs with mfc 1. 
   However the gtk design of not statically placing anything (again not a
fair comparison because the last equivalent I played with was vb 4) is brilliant,
and explains why gtk programs look and act funny when you resize the window.

  
  But still a cool implementation. 
  If only they had a native c++ libary so I didn't have do too all that C
style objects crap. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863738</link><pubDate>Thu, 21 Oct 2010 17:13:58 +0500</pubDate><title>Message #2863738</title><guid isPermaLink="false">2863738@Uncensored</guid><description><![CDATA[then you should be using SMART POINTERS! 
  I throw an age older debate at your age old debate. 
  SMART POINTERS! is effective! 
   
  I'd have to see how you're doing it, lazy anything is going to be a problem,
but you can do that shitty objective-C thing and just keep piling your objects
on an array which gets cleaned at the end. I really can't think of a more
shitty hack I've ever seen in a language. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863348</link><pubDate>Wed, 20 Oct 2010 17:29:57 +0500</pubDate><title>Message #2863348</title><guid isPermaLink="false">2863348@Uncensored</guid><description><![CDATA[  
 Oh, just to rekindle the age old debate.. a GC'd Java is pretty good for
building interpreters. I've been building up this embeddable collection filtering
/ expression language, which is basically a SQL subset with a dot operator
(for scope navigation) added. It builds lazy iterators on the fly, which seems
like it would be an annoying pattern to implement if I had to worry about
destructors. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863345</link><pubDate>Wed, 20 Oct 2010 17:25:07 +0500</pubDate><title>Message #2863345</title><guid isPermaLink="false">2863345@Uncensored</guid><description><![CDATA[  
 shouldn't it be more like string x = "foo"; 
  
 I would expect string to be a simple container class that *internally* holds
a pointer to a buffer. So it might actually be a bad idea to start trading
in pointers-to-type-string since it'll throw away whatever management that
string is doing for you already. But then again, I don't know anything about
C++ anymore, I got ruined by Java. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863304</link><pubDate>Wed, 20 Oct 2010 15:32:12 +0500</pubDate><title>Message #2863304</title><guid isPermaLink="false">2863304@Uncensored</guid><description><![CDATA[ I just did a funny thing. 
  I tried to write a c++ program. 
  
  java really kills your c++ skills no question about it. 
  I forgot about pointers. 
   
  I do this 
  string x = new string(); 
  and I get an error. What. it's fine. g++ is being stupid. 
  
  No, in fact string *x = new string();  
  gaaaaa... 
  
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2863245</link><pubDate>Wed, 20 Oct 2010 12:17:26 +0500</pubDate><title>Message #2863245</title><guid isPermaLink="false">2863245@Uncensored</guid><description><![CDATA[ Oh, I agree.  But, see, as a tester, I get the satisfaction of diagnosing
and debugging a problem to the point where it can be reproduced, but I don't
have to worry about actually fixing it.  :P 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2862928</link><pubDate>Tue, 19 Oct 2010 17:24:20 +0500</pubDate><title>Message #2862928</title><guid isPermaLink="false">2862928@Uncensored</guid><description><![CDATA[ oh but the satisfaction you get from finding the problem. 
  One of the top 10 worst problems I ever had to find turned out to be a result
of the order of windows messages changing on the main windows message queue
if you took different amounts of time to left your finger when you clicked
a button. 
  I spent weeks trying to figure this out. I had one customer who could do
it consistently, and nobody had ever seen the problem before. 
  As the customer was on the other side of the country I could only see what
she was doing and she said "I clicked the button and all the data goes away."
It turns out she clicked a lot slower than anybody ellse. 
  But I remember very vividly at the moment I discovered the problem I slammed
my fist down on the desk and yelled "FUCK" rather loudly. 
  This was one of those really quiet offices where you couldn't even whisper
or people would hear you. 
  Nobody called me on it because it was me and they figured it was probably
a good thing. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2862435</link><pubDate>Mon, 18 Oct 2010 11:10:19 +0500</pubDate><title>Message #2862435</title><guid isPermaLink="false">2862435@Uncensored</guid><description><![CDATA[ Oh, yeah, it's definitely quite refreshing... 
  
 ...until you have to figure out why your code is crashing at random intervals
spaced at a minimum of two weeks apart and turning on any kind of debugging
changes the timing enough that you can no longer reproduce the issue. 
  
 Yes, that's quite refreshing, indeed, at 9 AM after a solid 24 hour stretch
of non-stop diagnosis with no sleep. 
  
 One of the reasons why I'm happy to be doing software testing instead of
software development.  :P 
   Debug Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2862408</link><pubDate>Mon, 18 Oct 2010 10:03:46 +0500</pubDate><title>Message #2862408</title><guid isPermaLink="false">2862408@Uncensored</guid><description><![CDATA[True, the computer is naive, but it is always exact. 
  
 Sometimes that works against you -- "the computer does what you tell it to
do, not what you want it to do" 
  
 On the other hand, after dealing with people, and their clumsy human interfaces,
and their relativistic, inconsistent reasoning ... sometimes the invariable
exactness of a computer is quite refreshing. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2862225</link><pubDate>Sun, 17 Oct 2010 19:46:41 +0500</pubDate><title>Message #2862225</title><guid isPermaLink="false">2862225@Uncensored</guid><description><![CDATA[<html><body>

<p><span style="font-family: Arial; font-size: small;">
<blockquote>
<p style="color: #000000; font-family: Arial; font-size: small; display: block;">“I wanted guards in office blocks to head to the source of suspicious noises” – really? Did I want <em>dead</em> guards to respond to suspicious noises? Did I want guards to walk right past the player himself on his way back from breaking a window, in order to investigate the breaking of the window? Did I want guards who are being blown <em>out</em> of a window by the force of an explosion to stop, mid-air, and tell the others: “Oh hey, I’m closest to that broken window I was just flung through, I’ll go check out what caused it”? Did I want the guard who just shot you to run to your dead body and try to solve your murder?</p>
<p style="color: #000000; font-family: Arial; font-size: small; display: block;">Actually I kind of do, but that’s probably another game.</p>
<p style="color: #000000; font-family: Arial; font-size: small; display: block;">It’s easy to code what you want. But you don’t really <em>know</em> what you want until you’ve tried to explain it to a very, very stupid person. That was Socrates’ thing, in fact: he acted like an idiot to make people explain themselves to him on the most basic level, which usually revealed they didn’t truly understand their own beliefs. These days we have silicon hyperidiots to explain things to. They’re able to be much more stupid, many more times a second, than Socrates ever was. Coding is the Socratic method as an extreme sport.</p>
</blockquote>
<p style="color: #000000; font-family: Arial; font-size: small; display: block;">From: <span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;"><a href="http://www.pentadact.com/index.php/2010-09-19-gunpoint-ai">http://www.pentadact.com/index.php/2010-09-19-gunpoint-ai</a></span></p>
</span></p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2861975</link><pubDate>Sat, 16 Oct 2010 20:42:07 +0500</pubDate><title>Message #2861975</title><guid isPermaLink="false">2861975@Uncensored</guid><description><![CDATA[ So I tried installing the android sdk last week in a vm and it seemed to
hang I figured my vm was too small. 
  So I just did it at home now on my kick ass machine and holy fuck is the
thing slow. 
  I takes 40 seconds to boot the android emulator to the point where it will
first start to load your program which in my case is hello world and that
takes another 10 seconds. 
  Unbelieveable. 
   A friend of mine has a relativly new blackberry he told meit takes 5 minutes
to boot, I didn't believe him and he showed me. 
  It really does take 5 minuets to boot. Insane. What on earth is it doing?

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2861769</link><pubDate>Fri, 15 Oct 2010 23:37:21 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2861769@Uncensored</guid><description><![CDATA[<html><body>

<p>agreed.  I contribute to stack overflow and server fault.  Not sure what or who wrote the bot to troll posts to make that xchanage crap.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2860913</link><pubDate>Wed, 13 Oct 2010 15:42:47 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2860913@Uncensored</guid><description><![CDATA[<html><body>

<p>yea, second that. most anoying site ever. google polution.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2860386</link><pubDate>Tue, 12 Oct 2010 12:48:37 +0500</pubDate><title>Message #2860386</title><guid isPermaLink="false">2860386@Uncensored</guid><description><![CDATA[Ugh.  Expert Sex Change is one of those sites that makes me wish I could configure
my Google account to "always exclude search results from this domain" 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2859572</link><pubDate>Fri, 08 Oct 2010 11:14:49 +0500</pubDate><title>Message #2859572</title><guid isPermaLink="false">2859572@Uncensored</guid><description><![CDATA[  
 In all fairness Intel's documentation is still excellent... at least for
the bits that they don't consider proprietary. Back when I used to hack device
drivers when I was bored, their stuff was a goldmine. I still look at their
chipset datasheets before building a new computer. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2859339</link><pubDate>Thu, 07 Oct 2010 14:16:50 +0500</pubDate><title>Message #2859339</title><guid isPermaLink="false">2859339@Uncensored</guid><description><![CDATA[  
 Not saying much. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2859338</link><pubDate>Thu, 07 Oct 2010 14:16:27 +0500</pubDate><title>Message #2859338</title><guid isPermaLink="false">2859338@Uncensored</guid><description><![CDATA[ try stackoverflow it's even geekier. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2859336</link><pubDate>Thu, 07 Oct 2010 14:13:42 +0500</pubDate><title>Message #2859336</title><guid isPermaLink="false">2859336@Uncensored</guid><description><![CDATA[  
 Yeah, I really love xpertsxchange. 
  
 ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2859334</link><pubDate>Thu, 07 Oct 2010 14:12:19 +0500</pubDate><title>Message #2859334</title><guid isPermaLink="false">2859334@Uncensored</guid><description><![CDATA[ I haven't gotten close to hardware since that era I think so I don't notice
it, But I do remember the last time I got good documentation from a software
package. 
  It was the windows 3.1 API SDK. It was about 40 lbs of books I carried it
on my shoulder because the box was too unwieldly to carry any other way. 
  It's all been downhill from there. 
  But then again now we have the internet and as it is interactive I can ask
zillions of stupid questions like "can you write this program for me" and
it gets done, so I suppose I can't bitch about the state of no documentation.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2859304</link><pubDate>Thu, 07 Oct 2010 12:43:04 +0500</pubDate><title>Message #2859304</title><guid isPermaLink="false">2859304@Uncensored</guid><description><![CDATA[  
 Nice history lesson there. Remember when hardware manufacturers actually
documented shit? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2851115</link><pubDate>Fri, 10 Sep 2010 17:39:01 +0500</pubDate><title>Message #2851115</title><guid isPermaLink="false">2851115@Uncensored</guid><description><![CDATA[http://www.the-oasis.net/ftp_asm.htm 
  just came across that by accident. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2850617</link><pubDate>Wed, 08 Sep 2010 19:54:33 +0500</pubDate><title>Message #2850617</title><guid isPermaLink="false">2850617@Uncensored</guid><description><![CDATA[  I think I've already thought myself out of a job. 
  On the plus side, I doubt anybody else there would be able to work it out
either. :-) 
   
  DENSE_RANK, that's a good one. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2850596</link><pubDate>Wed, 08 Sep 2010 18:25:18 +0500</pubDate><title>Message #2850596</title><guid isPermaLink="false">2850596@Uncensored</guid><description><![CDATA[      
 Yeah, you're screwed... just use an object model.      
       
 In other news, I've been stuck with implementing the new European Union VAT
rules. This is turning out to be about as much fun as it sounds.     
    
    
 So, Ford, I guess the point is: it could be worse.   
  
  
 Also, just to keep dothebart happy, please make sure to use lots of the SELECT
MAX(x) KEEP (DENSE_RANK LAST ORDER BY y) (nonportable Oracle construct, but
high performance) going forward. It sounds like that would be useful in your
current situation, if only for job security. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2850516</link><pubDate>Wed, 08 Sep 2010 13:39:13 +0500</pubDate><title>Message #2850516</title><guid isPermaLink="false">2850516@Uncensored</guid><description><![CDATA[ I wrote a bit of software in 2008 that is so complicated I can't figure it
out. 
  It basically takes a multi table join where some of the tables are one-to-many
and collapses all of the multiple rows into one row to display in a report.

  So for example if you have one user id, and join against the address table
and they have 3 addresses and also join against degree and they have three
degrees, you're getting 9 rows back. I somehow parse through those rows and
end up with one row of data with 7 things on it, the userid, the three addresses
and the three degrees. 
  Now I have to add something else to all that joining and I want to piggyback
it on the existing stuff and I've been going through it for a day now and
I'm so tired of looking at it, I'd rather just write about it here. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848585</link><pubDate>Tue, 31 Aug 2010 13:40:25 +0500</pubDate><title>Message #2848585</title><guid isPermaLink="false">2848585@Uncensored</guid><description><![CDATA[ Right. So I tried trac. 
  It wasn't as painful as most other free system are to install. you know
the dependancy war and you never have the right version of *something* and
then IT has dependancies. 
  I have an old version of python, but it worked, I had to install sqllite,
python bindings for sqllite, setupsomethingorother and then I got trac to
install and run. 
  then I had to do a few things to set up the first user. 
  They put SO much work into features, you'd think they'd have a one button
push go setup but whatever. 
  So I got it running, it has its own webserver, but since our desktops can
only speak to port 80 and I have an iplanet running on port 80 I got iplanet
to rever proxy to trac and that seems to work. 
  So far from pain free the fact that I got it working within 1 day is a decent
sign. 
  So I sent it out to the dev group and so far nobody's said anything. We
shall see. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848455</link><pubDate>Tue, 31 Aug 2010 08:03:51 +0500</pubDate><title>Message #2848455</title><guid isPermaLink="false">2848455@Uncensored</guid><description><![CDATA[<html><body>

<p>i've seen redmine over at froscon, which seems to be pretty sophisticated to also track times you spent on issues, and offers the ability to create workflows.</p>
<p>One of our bigger customer uses JIRA, they seem to be hapy with it.</p>
<p>we evolved from .xls for deffect lists to mantisse over here, and use it a little for workflow management too.</p>
<p>though mantisse sucks in time management, and getting workflows integrated which don't primary revolve around bugs.</p>
<p>We also had some bugzilla over here, which died long ago before I came here (and was replaced by these excel sheets...). And, to cite bonjovi, while bugzilla is one of the first free bugtrackers available, its bugzilla giving bugtrackers a bad name.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848372</link><pubDate>Mon, 30 Aug 2010 21:41:24 +0500</pubDate><title>Message #2848372</title><guid isPermaLink="false">2848372@Uncensored</guid><description><![CDATA[  
 Only thing wrong with Trac is that all bug comments are in Wiki syntax, which
plays havoc with anybody trying to post in the bug, etc. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848348</link><pubDate>Mon, 30 Aug 2010 20:10:31 +0500</pubDate><title>Message #2848348</title><guid isPermaLink="false">2848348@Uncensored</guid><description><![CDATA[ heh, yeah.   
  Apparently I'm the only one who doesn't like excel or at least takes issue
with it. It just seems like really the wrong tool. 
  somebody suggested trac. So I'm trying that now. 
  Kudos so far to python's setup.py install easyinstall stuff. So far so good.

  I think this might actually be the first python program I've ever run. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848328</link><pubDate>Mon, 30 Aug 2010 19:06:23 +0500</pubDate><title>Message #2848328</title><guid isPermaLink="false">2848328@Uncensored</guid><description><![CDATA[  
 Oh, I thought it was free, because of all the open source guys using it.
I guess they get a license deal... 
  
 Honestly I suggest if somebody wants this, you should stall and drag your
heels as long as possible. Before long, you'll have 3 different tracking systems,
which nobody is entirely happy with, and the statistics extracted from one
of them (but not the other two) will be tied into your annual/quarterly performance
review. 
  
 And then, because nobody is happy with any of them, your boss will ask you
to summarize all of it and just send him an Excel sheet weekly. 
  
 So just end-run around all that and stick with Excel in the first place.
You'll be better off in the long run. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848308</link><pubDate>Mon, 30 Aug 2010 17:16:13 +0500</pubDate><title>Message #2848308</title><guid isPermaLink="false">2848308@Uncensored</guid><description><![CDATA[  Little of out my price range. :-) 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848300</link><pubDate>Mon, 30 Aug 2010 16:55:07 +0500</pubDate><title>Message #2848300</title><guid isPermaLink="false">2848300@Uncensored</guid><description><![CDATA[    
 I'd avoid bugzilla, it kinda sucks... although it might be more compatible
with iPlanet than anything else out there, it is a CGI thing.   
  
  
 JIRA is my current fav tracker. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848289</link><pubDate>Mon, 30 Aug 2010 16:13:12 +0500</pubDate><title>Message #2848289</title><guid isPermaLink="false">2848289@Uncensored</guid><description><![CDATA[ we don't have a bugtracking system at work. 
 We have two and we don't use them, we use spreadsheets and I've suggested
that maybe that just sucks a lot, so since nobody else took my advice about
doing something about it, I'm going to. 
  suggestions for free bugtracking system? 
  gotta be able to run on solaris, iplanet, not apache, as in a stupid little
cgi system would be nice. 
  it doesn't have to be great, it doesn't have to be bugzilla, it just has
to be able to take notes and mark it as fixed not fixed. 
  I can probably use a wiki if worst came to worst but I'd prefer something
more bug tracking related otherwise I might as well use a spreadsheet. 
  Suggestions? Thanks. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2848275</link><pubDate>Mon, 30 Aug 2010 15:26:20 +0500</pubDate><title>Message #2848275</title><guid isPermaLink="false">2848275@Uncensored</guid><description><![CDATA[ I prefer spaetzle and strudel, myself. 
  
 I've oft wondered if one could make a spaetzle strudel. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847652</link><pubDate>Fri, 27 Aug 2010 12:06:54 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2847652@Uncensored</guid><description><![CDATA[ >Yeah sounds like a real sausage contest.  
  
 I really prefer wiener schnitzel, myself. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847512</link><pubDate>Fri, 27 Aug 2010 05:21:19 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2847512@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Thu Aug 26 2010 03:24:14 PM EDT</span> <span>from   Ford II @ Uncensored </span> <span class="message_subject">Subject: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>I don't know what you just said, but ok.   <br /></blockquote>
<br />Don't worry, a lot of people have that problem, it's part of the rite of passage of being able to play ball in this room.  <br />I understand maybe 95-98% of what he says most of the time and Ihave to read 2 paragraphs of wikipedia to get the rest. :-)  <br /></div>
<br /></div>
</blockquote>
<p>Yeah sounds like a real sausage contest.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847511</link><pubDate>Fri, 27 Aug 2010 05:20:13 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2847511@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Thu Aug 26 2010 02:00:10 PM EDT</span> <span>from   Spell Binder @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Hey, at least he's honest.  :)  <br /></div>
<br /></div>
</blockquote>
<p>Said as in what point was said. foo.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847401</link><pubDate>Thu, 26 Aug 2010 19:28:01 +0500</pubDate><title>Message #2847401</title><guid isPermaLink="false">2847401@Uncensored</guid><description><![CDATA[ > So "A" == "A" returns true only by accident, because the compiler   
 >optimized it such that there is only one object instance created.     
  
  I didn't see the precedence problem at first so I thought it was probably
in the java spec that the compiler will optimize string constants to the same
object. I mean it should do it anyway, but being so obvious I thought they
might put it in the spec. 
 the == was obvious, I thought the point was about what the == was operating
on. 
  If you had used .equals it would have been obvious what was being compared
to what. 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847392</link><pubDate>Thu, 26 Aug 2010 18:29:32 +0500</pubDate><title>Message #2847392</title><guid isPermaLink="false">2847392@Uncensored</guid><description><![CDATA[ > Seriously. Ford you should just code in Scheme, clearly you'd be   
 >happier...  
  
 And your code would compress really well, since 90% of it is just two characters...

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847391</link><pubDate>Thu, 26 Aug 2010 18:28:56 +0500</pubDate><title>Message #2847391</title><guid isPermaLink="false">2847391@Uncensored</guid><description><![CDATA[    
 Seriously. Ford you should just code in Scheme, clearly you'd be happier...
  
    
 So yes, the example was a precedence thing, but it actually contained two
different bugs, one was == vs .equals and the other was precedence.   
    
 So "A" == "A" returns true only by accident, because the compiler optimized
it such that there is only one object instance created.   
    
 So, in the example, pig == dog is false, but pig.intern() == dog.intern()
would be true, but it's a bad idea to ever call .intern() in a production
program.   
  
  
 This example and many more can be shamelessly stolen from Neal Gafter's excellent
book, titled something like Java Puzzlers : traps and pitfalls 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847319</link><pubDate>Thu, 26 Aug 2010 15:40:45 +0500</pubDate><title>Message #2847319</title><guid isPermaLink="false">2847319@Uncensored</guid><description><![CDATA[(damn that was pedantic, even for me <grin>) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847318</link><pubDate>Thu, 26 Aug 2010 15:40:28 +0500</pubDate><title>Message #2847318</title><guid isPermaLink="false">2847318@Uncensored</guid><description><![CDATA[A parenthesis works?  I'm surprised it even compiles.  Most languages require
that parentheses are used in pairs. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847312</link><pubDate>Thu, 26 Aug 2010 15:29:41 +0500</pubDate><title>Message #2847312</title><guid isPermaLink="false">2847312@Uncensored</guid><description><![CDATA[...and you can stop laughing, even my dad was surprised that I knew exactly
zero of the precedence rules, because I just use parenthesis, and that works
every single time. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847311</link><pubDate>Thu, 26 Aug 2010 15:27:16 +0500</pubDate><title>Message #2847311</title><guid isPermaLink="false">2847311@Uncensored</guid><description><![CDATA[ oh I see, it's a precedence thing. the + overrides the ==. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847310</link><pubDate>Thu, 26 Aug 2010 15:25:32 +0500</pubDate><title>Message #2847310</title><guid isPermaLink="false">2847310@Uncensored</guid><description><![CDATA[ >  I wouldn't even make the assumption that pig == dog if dog was   
 >defined as "length: 10".   
  
 which by the way, I just tried and it's still not equal 
    
  This however 
   System.out.println("A" == "A"); 
   
  prints true. Go figure. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847309</link><pubDate>Thu, 26 Aug 2010 15:24:14 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2847309@Uncensored</guid><description><![CDATA[ >I don't know what you just said, but ok.  
  
 Don't worry, a lot of people have that problem, it's part of the rite of
passage of being able to play ball in this room. 
  I understand maybe 95-98% of what he says most of the time and Ihave to
read 2 paragraphs of wikipedia to get the rest. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847308</link><pubDate>Thu, 26 Aug 2010 15:19:11 +0500</pubDate><title>Message #2847308</title><guid isPermaLink="false">2847308@Uncensored</guid><description><![CDATA[ >        final String pig = "length: 10";  
 >        final String dog = "length: " + pig.length();  
  
  I wouldn't even make the assumption that pig == dog if dog was defined as
"length: 10". 
  Maybe there's some java spec that guaranetees that identical final strings
will yield the same object, but I wouldn't rely on that, for the same reason
I don't rely on short ccircut boolean expressions: c++. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847280</link><pubDate>Thu, 26 Aug 2010 14:00:10 +0500</pubDate><title>Message #2847280</title><guid isPermaLink="false">2847280@Uncensored</guid><description><![CDATA[ Hey, at least he's honest.  :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847247</link><pubDate>Thu, 26 Aug 2010 12:15:28 +0500</pubDate><title>Message #2847247</title><guid isPermaLink="false">2847247@Uncensored</guid><description><![CDATA[  
 Duly noted. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2847170</link><pubDate>Thu, 26 Aug 2010 08:26:29 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2847170@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Wed Aug 25 2010 12:18:37 AM EDT</span> <span>from   LoanShark @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />Python in its current state is, I believe, a modern interpreter but not precisely a compiler. Compiles to efficiently interpreted bytecode and uses a lot of "modern interpreter" techniques to interpret that, but still an interpreter. unladen-swallow should produce actual native code  <br /><br />The issue with projects like JWACS is that they're probably not so well tested. You can bet that any first class language implementation (whether it's a compiler or interpreter) is going to have a large test suite. JWACS needs to reify the whole language, but probably doesn't take advantage of the same test suite... <br /></div>
<br /></div>
</blockquote>
<p>I don't know what you just said, but ok.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846809</link><pubDate>Wed, 25 Aug 2010 11:53:51 +0500</pubDate><title>Message #2846809</title><guid isPermaLink="false">2846809@Uncensored</guid><description><![CDATA[  
 The G1 GC. 
  
 http://labs.oracle.com/jtech/pubs/04-g1-paper-ismm.pdf 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846652</link><pubDate>Wed, 25 Aug 2010 00:18:37 +0500</pubDate><title>Message #2846652</title><guid isPermaLink="false">2846652@Uncensored</guid><description><![CDATA[  
 Python in its current state is, I believe, a modern interpreter but not precisely
a compiler. Compiles to efficiently interpreted bytecode and uses a lot of
"modern interpreter" techniques to interpret that, but still an interpreter.
unladen-swallow should produce actual native code 
  
 The issue with projects like JWACS is that they're probably not so well tested.
You can bet that any first class language implementation (whether it's a compiler
or interpreter) is going to have a large test suite. JWACS needs to reify
the whole language, but probably doesn't take advantage of the same test suite...

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846648</link><pubDate>Tue, 24 Aug 2010 23:53:45 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846648@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mon Aug 23 2010 08:30:01 PM EDT</span> <span>from   LoanShark @ Uncensored </span> <span class="message_subject">Subject: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>Hygienic Macross: eval()      <br /></blockquote>
<br />eval is an /interpreter/. Hygienic macros are a /compiler/.    <br /><br /><br />In any case, an eval function that requires string arguments fails as a basic method of higher-order programming, let alone meeting the definition of a macro facility. Perl's eval comes closer; but it's still not macros.  <br /></div>
<br /></div>
</blockquote>
<p>From what I understand projects like commonjs will produce interpreter/compilers similiar to python; I'm not sure if this helps you or not.</p></body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846647</link><pubDate>Tue, 24 Aug 2010 23:52:14 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846647@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mon Aug 23 2010 08:31:06 PM EDT</span> <span>from   LoanShark @ Uncensored </span> <span class="message_subject">Subject: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>first class continuations in JavaScript: <a href="http://chumsley.org/jwacs/" target="webcit01">http://chumsley.org/jwacs/</a> <br /></blockquote>
<br />Put it into the core language, then we'll talk. Source code transformers are cheating. You can implement anything you want as a source code transformation to C, but that doesn't mean C supports feature X.  <br /></div>
<br /></div>
</blockquote>
<p>Afaik it has to be available in the 'core language' in order to work, unless it's an entirely new JavaScript engine.</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846455</link><pubDate>Tue, 24 Aug 2010 10:52:13 +0500</pubDate><title>Message #2846455</title><guid isPermaLink="false">2846455@Uncensored</guid><description><![CDATA[ 
  
 True. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846357</link><pubDate>Tue, 24 Aug 2010 02:32:11 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846357@Uncensored</guid><description><![CDATA[<html><body>

<p>if you have</p>
<p>int a = b &amp; (1&lt;&lt;12)</p>
<p>a might count as 'true', but if you then put it into unsigned char b, its false.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846322</link><pubDate>Mon, 23 Aug 2010 20:34:37 +0500</pubDate><title>Message #2846322</title><guid isPermaLink="false">2846322@Uncensored</guid><description><![CDATA[  
 (Nice link, by the way. Hopefully it doesn't generate horribly broken, un-debuggable
Javascript that suffers from browser quirks) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846321</link><pubDate>Mon, 23 Aug 2010 20:31:06 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846321@Uncensored</guid><description><![CDATA[ >first class continuations in JavaScript: http://chumsley.org/jwacs/   
  
 Put it into the core language, then we'll talk. Source code transformers
are cheating. You can implement anything you want as a source code transformation
to C, but that doesn't mean C supports feature X. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846320</link><pubDate>Mon, 23 Aug 2010 20:30:01 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846320@Uncensored</guid><description><![CDATA[ >Hygienic Macross: eval()     
    
  eval is an /interpreter/. Hygienic macros are a /compiler/.   
  
  
 In any case, an eval function that requires string arguments fails as a basic
method of higher-order programming, let alone meeting the definition of a
macro facility. Perl's eval comes closer; but it's still not macros. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846307</link><pubDate>Mon, 23 Aug 2010 19:13:00 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846307@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Sun Aug 22 2010 04:58:41 PM EDT</span> <span>from   LoanShark @ Uncensored </span> <span class="message_subject">Subject: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">
<blockquote>Uh, JavaScript is Scheme in C's clothing. Python is Lisp , except     <br />it's very slow. Lua is nice too, but a bit slow.     <br /></blockquote>
<br />Uh, no. Last I checked, JavaScript didn't have hygienic macros or first-class continuations.    <br /><br /><br />Also, it has syntax. Scheme has no syntax[1], only parentheses.  <br /><br />[1] <a href="http://www-mitpress.mit.edu/sicp/full-text/book/book.html" target="webcit01">http://www-mitpress.mit.edu/sicp/full-text/book/book.html</a> <br /></div>
<br /></div>
</blockquote>
<p>Hygienic Macross: eval()</p>
<p>first class continuations in JavaScript: http://chumsley.org/jwacs/</p>
<p>Syntax:... is what you type, every language has syntax.</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846138</link><pubDate>Mon, 23 Aug 2010 06:52:40 +0500</pubDate><title>Message #2846138</title><guid isPermaLink="false">2846138@Uncensored</guid><description><![CDATA[Bart, that's a scripting language thing. In C, it's safe to write cpl.runkey_on = !cpl.runkey_on if the int is really just a boolean.

The example reminded me of this Java one. What does this print?

public class AnimalFarm {
    public static void main(String[] args) {
        final String pig = "length: 10";
        final String dog = "length: " + pig.length();
        System.out.println("Animals are equal: "
                           + pig == dog);
    }
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846125</link><pubDate>Mon, 23 Aug 2010 04:49:47 +0500</pubDate><title>Message #2846125</title><guid isPermaLink="false">2846125@Uncensored</guid><description><![CDATA[<html><body>

<p>if its not safe where that integer is unequal zero, and you have cases where you're storing that if into something else (like a union or disc-storage) checking for != 0 might save you from loosing information.</p>
<p>so</p>
<p>a = (a != 0)</p>
<p>actualy may make sense.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846089</link><pubDate>Mon, 23 Aug 2010 00:31:13 +0500</pubDate><title>Message #2846089</title><guid isPermaLink="false">2846089@Uncensored</guid><description><![CDATA[ > You've got that backwards. the ternary operator has higher precedence,
 
 >so Nite*Star's example is a flip-and-test operation, just poorly   
 >written.   
  
 You're right, of course. 
  
 And the fact that it's that hard for even a developer to figure out == fail.

  
 If it's truly flip-and-test, it could be written simply as  
  
 if (cpl.runkey_on = !cpl.runkey_on) 
  
 But to make it easy to read, it should be written as  
  
 cpl.runkey_on = !cpl.runkey_on; 
 if (cpl.runkey_on) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846072</link><pubDate>Sun, 22 Aug 2010 23:17:40 +0500</pubDate><title>Message #2846072</title><guid isPermaLink="false">2846072@Uncensored</guid><description><![CDATA[Maybe used as a signal for an event case somewhere?

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846020</link><pubDate>Sun, 22 Aug 2010 16:58:41 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2846020@Uncensored</guid><description><![CDATA[ >Uh, JavaScript is Scheme in C's clothing. Python is Lisp , except    
 >it's very slow. Lua is nice too, but a bit slow.    
    
 Uh, no. Last I checked, JavaScript didn't have hygienic macros or first-class
continuations.   
  
  
 Also, it has syntax. Scheme has no syntax[1], only parentheses. 
  
 [1] http://www-mitpress.mit.edu/sicp/full-text/book/book.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846017</link><pubDate>Sun, 22 Aug 2010 16:54:08 +0500</pubDate><title>Message #2846017</title><guid isPermaLink="false">2846017@Uncensored</guid><description><![CDATA[ > So the whole thing could have been written as:   
 >    
 >   if (cpl.runkey_on)   
  
 You've got that backwards. the ternary operator has higher precedence, so
Nite*Star's example is a flip-and-test operation, just poorly written. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846016</link><pubDate>Sun, 22 Aug 2010 16:50:04 +0500</pubDate><title>Message #2846016</title><guid isPermaLink="false">2846016@Uncensored</guid><description><![CDATA[ > Aug 21 2010 5:29am from Nite*Star @uncnsrd   
 >Perl? PHP?   
 >   
 >  
  
 PHP is not really a solid platform for development. Too much undefined or
poorly defined semantics (take a look at == vs === and the handling of null.)
It's quite slow. It has binary compatibility issues with Apache and Oracle.
It has source compatibility issues with previous versions of itself. Also,
I don't see how a web templating language meets IG's requirements. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2846013</link><pubDate>Sun, 22 Aug 2010 16:37:45 +0500</pubDate><title>Message #2846013</title><guid isPermaLink="false">2846013@Uncensored</guid><description><![CDATA[ >What do all of you developer types think is the 'best' embeddable  
 >scripting extension language?  (Open source candidates only,  
 >please.)  
  
 I'd lean toward Python or Ruby, if your target is something lightweight and
interpreted, but not necessarily blazing high performance. Perl is a non-starter
because it's picked up too much cruft over the years. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845980</link><pubDate>Sun, 22 Aug 2010 13:45:29 +0500</pubDate><title>Message #2845980</title><guid isPermaLink="false">2845980@Uncensored</guid><description><![CDATA[  you'll see that x and y toggle and are opposite each other. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845979</link><pubDate>Sun, 22 Aug 2010 13:45:15 +0500</pubDate><title>Message #2845979</title><guid isPermaLink="false">2845979@Uncensored</guid><description><![CDATA[
#include <stdio.h>
#include <stdlib.h>

int main(int num, char *opts[])
  {
    int x = 1;
    int y;
    y = (!(x = x? 0 : 1));
    printf ("x = %d,    y = %d\n", x, y);
    y = (!(x = x? 0 : 1));
    printf ("x = %d,    y = %d\n", x, y);
    y = (!(x = x? 0 : 1));
    printf ("x = %d,    y = %d\n", x, y);
    y = (!(x = x? 0 : 1));
    printf ("x = %d,    y = %d\n", x, y);
    y = (!(x = x? 0 : 1));
    printf ("x = %d,    y = %d\n", x, y);
    y = (!(x = x? 0 : 1));
    printf ("x = %d,    y = %d\n", x, y);
  return 0;
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845978</link><pubDate>Sun, 22 Aug 2010 13:42:25 +0500</pubDate><title>Message #2845978</title><guid isPermaLink="false">2845978@Uncensored</guid><description><![CDATA[  I think the purpose is to operate on the current value of runkey_on and
then toggle it, which is basially what it does. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845977</link><pubDate>Sun, 22 Aug 2010 13:41:14 +0500</pubDate><title>Message #2845977</title><guid isPermaLink="false">2845977@Uncensored</guid><description><![CDATA[ > if (!(cpl.runkey_on = cpl.runkey_on ? FALSE : TRUE))   
  
 It toggles the value of cpl.runkey_on and then returns the opposite, thus
the original value to the if statement. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845846</link><pubDate>Sat, 21 Aug 2010 11:42:57 +0500</pubDate><title>Message #2845846</title><guid isPermaLink="false">2845846@Uncensored</guid><description><![CDATA[ > if (!(cpl.runkey_on = cpl.runkey_on ? FALSE : TRUE))   
  
 > Can you explain it to me? :/ 'cuz I don't know what it says. 
  
 Well, the first thing it would do is assign cpl.runkey_on to the value of
itself, which of course accomplishes nothing, but the value returned by that
expression is whatever that variable's value was in the first place. 
  
 Then this expression:    xxx ? FALSE : TRUE      returns FALSE if the expression
is true, and TRUE if the expression is false.  Assuming that FALSE is set
to zero and TRUE is set to nonzero, this would have the effect of negating
the expression. 
  
 Then this expression:    !(x)      negates it again. 
  
 So the whole thing could have been written as: 
  
   if (cpl.runkey_on) 
  
 This indicates that either this code is several generations old and someone
did a really bad job reducing out code that was no longer needed, or (far
more likely) someone was just being obnoxious and wrote deliberately obfuscated
code. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845799</link><pubDate>Sat, 21 Aug 2010 05:29:06 +0500</pubDate><title>Message #2845799</title><guid isPermaLink="false">2845799@Uncensored</guid><description><![CDATA[Perl? PHP? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845777</link><pubDate>Sat, 21 Aug 2010 02:10:05 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2845777@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Fri Aug 20 2010 08:11:43 AM EDT</span> <span>from   IGnatius T Foobar @ Uncensored </span> <span class="message_subject">Subject: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Yeah, I've been looking around at the various "embeddable" language interpreters. <br />JavaScript is a language I like a lot, but all of the available interpreters are either clumsy, bloated, or bring a lot of baggage along with them.  Scheme is designed for embedding but the language sucks.  Python ... it's just too much.  Lua seems like a nice small interpreter, is GPL-compatible, doesn't bring along any requirements other than itself, and the language seems reasonable. <br /><br />I was wondering whether I'm missing any good candidates.  Something with C-like syntax would be wonderful.  <br /></div>
<br /></div>
</blockquote>
<p>Uh, JavaScript is Scheme in C's clothing. Python is Lisp , except it's very slow. Lua is nice too, but a bit slow.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845764</link><pubDate>Fri, 20 Aug 2010 21:50:22 +0500</pubDate><title>Message #2845764</title><guid isPermaLink="false">2845764@Uncensored</guid><description><![CDATA[No idea. :/ 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845763</link><pubDate>Fri, 20 Aug 2010 21:02:28 +0500</pubDate><title>Message #2845763</title><guid isPermaLink="false">2845763@Uncensored</guid><description><![CDATA[I spent a year in high school with Pascal and the main thing I learned is
that linear thought makes my brain cry. 
 . 
 I spend a lot of time jumping to intuitive conclusions and then trying to
justify them. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845733</link><pubDate>Fri, 20 Aug 2010 17:58:32 +0500</pubDate><title>Message #2845733</title><guid isPermaLink="false">2845733@Uncensored</guid><description><![CDATA[Can you explain it to me? :/ 'cuz I don't know what it says. Remember, last
time I programmed was in BASIC v7.0 ... :p 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845699</link><pubDate>Fri, 20 Aug 2010 16:19:16 +0500</pubDate><title>Message #2845699</title><guid isPermaLink="false">2845699@Uncensored</guid><description><![CDATA[I'd revoke someone's commit access for writing code like that. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845676</link><pubDate>Fri, 20 Aug 2010 15:51:16 +0500</pubDate><title>Message #2845676</title><guid isPermaLink="false">2845676@Uncensored</guid><description><![CDATA[OK, let's see if you programmers out there are as tickled pink by this as
my friends were (they found this in the code they had forked from and got
all up in arms ... me, I'm not quite certain what it means .... ) 
  
 if (!(cpl.runkey_on = cpl.runkey_on ? FALSE : TRUE)) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845669</link><pubDate>Fri, 20 Aug 2010 15:46:45 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2845669@Uncensored</guid><description><![CDATA[ > Aug 20 2010 1:53am from dothebart @uncnsrd   
 >Subject: Re:  
 >lua seems to be an often taken choice.   
  
 Eeeeek, not lua! 
  
 The MMORPG/open-source project I used to be involved with uses lua. 
  
 The new MMORPG/open-source project I'm currently involved with, which forked
from the old one from an earlier version, uses Python. 
  
 As per the devs (and I'ved noticed this as well): lua is too buggy and just
too GDF'n slow.... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845662</link><pubDate>Fri, 20 Aug 2010 15:34:10 +0500</pubDate><title>Message #2845662</title><guid isPermaLink="false">2845662@Uncensored</guid><description><![CDATA[<html><body>

<p>me still thinks a milter alike solution is the best way to go.</p>
<p>citserver is doing plenty a lot inline, bringing an interpreter into the game adds a real lot.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845619</link><pubDate>Fri, 20 Aug 2010 13:11:19 +0500</pubDate><title>Message #2845619</title><guid isPermaLink="false">2845619@Uncensored</guid><description><![CDATA[ Re: The reverse state monad. 
  
 That is a bit mind-bending.  The real meat of it are these lines: 
  
   let (a,s'') = sf s' 
       (b,s')  = runRState (f a) s 
   in (b,s'') 
  
 The first line runs the first computation, sf, passing it the state from
the second computation, s'.  The second line runs the second computation,
f, passing it the result from the first computation, a, and the original state
from before the first computation, s. 
  
 The mind-bender is that s' depends on the result of "f a", but "a" depends
on the result of "sf s'".  I think the reason this works in Haskell is because
of lazy-evaluation.  Unless a value is required to compute an expression,
that value never gets computed. 
  
 But I may be wrong... 
   Reverse Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845600</link><pubDate>Fri, 20 Aug 2010 12:34:03 +0500</pubDate><title>Message #2845600</title><guid isPermaLink="false">2845600@Uncensored</guid><description><![CDATA[ Have you conisdered TCL?  The general syntax isn't C-like, but numerical
and boolean expressions are.  Plus, TCL is designed specifically to create
"safe" interpreters so you can control the environment in which a foreign
script runs. 
   TCL Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845593</link><pubDate>Fri, 20 Aug 2010 12:01:24 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2845593@Uncensored</guid><description><![CDATA[ > I was wondering whether I'm missing any good candidates.  Something   
 >with C-like syntax would be wonderful.   
  
 AWK! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845592</link><pubDate>Fri, 20 Aug 2010 12:00:22 +0500</pubDate><title>Message #2845592</title><guid isPermaLink="false">2845592@Uncensored</guid><description><![CDATA[ >http://lukepalmer.wordpress.com/2008/08/10/mindfuck-the-reverse-state-m
 
 >onad/   
  
  Isn't this functionally the same as recursion (sort of) where the caller
(the previous guy) gets the results of the next function call?  
 Not exactly, but you see what I'm getting at. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845591</link><pubDate>Fri, 20 Aug 2010 11:58:26 +0500</pubDate><title>Message #2845591</title><guid isPermaLink="false">2845591@Uncensored</guid><description><![CDATA[ >*pure*  *fucking*  *genius*  
  
 backwards. think you If 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845531</link><pubDate>Fri, 20 Aug 2010 08:11:43 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2845531@Uncensored</guid><description><![CDATA[Yeah, I've been looking around at the various "embeddable" language interpreters.
 JavaScript is a language I like a lot, but all of the available interpreters
are either clumsy, bloated, or bring a lot of baggage along with them.  Scheme
is designed for embedding but the language sucks.  Python ... it's just too
much.  Lua seems like a nice small interpreter, is GPL-compatible, doesn't
bring along any requirements other than itself, and the language seems reasonable.

  
 I was wondering whether I'm missing any good candidates.  Something with
C-like syntax would be wonderful. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845460</link><pubDate>Fri, 20 Aug 2010 01:53:11 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2845460@Uncensored</guid><description><![CDATA[<html><body>

<p>lua seems to be an often taken choice.</p>
<p>I'd rather prefer not to include it, but have something like a milter to forward certaint stuff to. So once a library for the other side is in place, and wrappers are there, you can use any language you like; plus it won't harm the server itself.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845459</link><pubDate>Fri, 20 Aug 2010 01:50:00 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2845459@Uncensored</guid><description><![CDATA[<html><body>

<p>so, what does it say?</p>
<p>yes. with high frequent allocs/deallocs you get a C++ program down to the speed of a java...</p>
<p>follow the link for the one guy doing some optimization about less frequent allocs, zap! ten times faster again.</p>
<p>i'm missing c-carpet or mono here though.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845446</link><pubDate>Thu, 19 Aug 2010 23:25:12 +0500</pubDate><title>Message #2845446</title><guid isPermaLink="false">2845446@Uncensored</guid><description><![CDATA[<html><body>

<p>Can I throw y'all off on a really awful detour for a little while?</p>
<p>Ok</p>
<p>What do all of you developer types think is the 'best' embeddable scripting extension language?  (Open source candidates only, please.)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845421</link><pubDate>Thu, 19 Aug 2010 20:12:23 +0500</pubDate><title>Message #2845421</title><guid isPermaLink="false">2845421@Uncensored</guid><description><![CDATA[  
 Just for Spell. 
  
 http://lukepalmer.wordpress.com/2008/08/10/mindfuck-the-reverse-state-monad/

  
 I don't even pretend to understand this. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845420</link><pubDate>Thu, 19 Aug 2010 20:08:27 +0500</pubDate><title>Message #2845420</title><guid isPermaLink="false">2845420@Uncensored</guid><description><![CDATA[lukpio 8 points 7 months ago[-]
Someone in the #haskell IRC channel mentioned the .reverse state monad. explaining that it used the state from the next computation and passed it to 
the previous one.

http://www.reddit.com/r/lisp/comments/aqcqx/how_a_common_lisp_programmer_views_users_of_other/

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845419</link><pubDate>Thu, 19 Aug 2010 20:03:47 +0500</pubDate><title>Message #2845419</title><guid isPermaLink="false">2845419@Uncensored</guid><description><![CDATA[  
 The use of Doc Scott for Haskell is -perfect.- Great Scott, it's all out
of order! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845418</link><pubDate>Thu, 19 Aug 2010 20:01:29 +0500</pubDate><title>Message #2845418</title><guid isPermaLink="false">2845418@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2845369</link><pubDate>Thu, 19 Aug 2010 17:15:01 +0500</pubDate><title>Message #2845369</title><guid isPermaLink="false">2845369@Uncensored</guid><description><![CDATA[  
 More microbenchmarks. 
  
 http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2844769</link><pubDate>Tue, 17 Aug 2010 21:53:32 +0500</pubDate><title>Message #2844769</title><guid isPermaLink="false">2844769@Uncensored</guid><description><![CDATA[  
 I'm not sure what the icon is for "broke down old computational monadologists".

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2844676</link><pubDate>Tue, 17 Aug 2010 14:56:50 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2844676@Uncensored</guid><description><![CDATA[<html><body>

<p>what was that column for haskel on that matrix how programmers see each others?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2844571</link><pubDate>Tue, 17 Aug 2010 10:32:08 +0500</pubDate><title>Message #2844571</title><guid isPermaLink="false">2844571@Uncensored</guid><description><![CDATA[ I believe it was this comment: 
  Building a high performance compiler backend is a huge amount of work, 

  
   Well, yes, it is, but the tradeoff is you end up with a good product. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2844570</link><pubDate>Tue, 17 Aug 2010 10:31:26 +0500</pubDate><title>Message #2844570</title><guid isPermaLink="false">2844570@Uncensored</guid><description><![CDATA[  I would think it would be worse (having my usual 2 paragraphs of experience)
but there was a good argument there: the closer you get to the hardware before
you do your optomization, the more optimization tuned to the specific machine
you can do. 
  
  But then again, if you wrote a good to-the-native-processor back end you'd
get the same thing, and I think they're argument against that was "It's hard."
 
   So if you're not willing to do it the right way, sure LLVM sounds like
a great 1st choice. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2844345</link><pubDate>Mon, 16 Aug 2010 18:54:19 +0500</pubDate><title>Message #2844345</title><guid isPermaLink="false">2844345@Uncensored</guid><description><![CDATA[  
 For those who still think runtime VM optimization is always worse, 
  
 http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-llvm.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2843253</link><pubDate>Fri, 13 Aug 2010 14:10:55 +0500</pubDate><title>Message #2843253</title><guid isPermaLink="false">2843253@Uncensored</guid><description><![CDATA[ >Having been burned by the same issue a bazillion times, I do the same. 
 
 >    
 > Fucking Notepad.   
  
  Really need to replace this shitty web thing, and what google is planning
on doing isn't any better. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2843138</link><pubDate>Fri, 13 Aug 2010 11:59:59 +0500</pubDate><title>Message #2843138</title><guid isPermaLink="false">2843138@Uncensored</guid><description><![CDATA[Having been burned by the same issue a bazillion times, I do the same. 
  
 Fucking Notepad. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2842794</link><pubDate>Thu, 12 Aug 2010 19:35:10 +0500</pubDate><title>Message #2842794</title><guid isPermaLink="false">2842794@Uncensored</guid><description><![CDATA[  Today at work I was using sales force to enter a case comment. We use salesforce
for bugtracking. 
  As I went to hit save, I got an error saying that the case had been updated
by somebody while I was writing my comment so by the time I hit save my state
was stale, and I should click here to refresh. 
  Of course refreshing blows away your comment. 
  This having been the third time this happened to me, I thought I'd try something
else, and I hit the back button instead, the browser is usually pretty good
about reproducing state. 
  Except that salesforce is extremely AJAX heavy and pretty much ALL the controls
on the page are generated by javascript and aren't part of the source page,
so the browser is unable to reproduce the page the same way and as a result,
my comment was gone.   
   
  So when you go to hit save on salesforce, you're basically gambling on whether
or not you're going
to lose your work. 
  Certainly plenty of blame goes to salesforce, but there's some to be doled
out in the inherently flawed design of the web, or at least what it's turned
into. 
  
  My coworker suggested that I do what he does: write everything in notepad
then cut and paste when you're done. 
  
  Do I have to say it? Sure I do. 
  
  Fucking Progress. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2842767</link><pubDate>Thu, 12 Aug 2010 18:18:13 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2842767@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Wed Aug 04 2010 04:38:07 PM EDT</span> <span>from   Ford II @ Uncensored </span> <span class="message_subject">Subject: Re:</span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">yes you can. I mean I see what you're saying, but you could write  a better all purpose fat client.  <br /></div>
<br /></div>
</blockquote>
<p>No, hello! Multimedia Flash..Graphics, Sounds. 3 languages built in, unlimited page size, adobe... This isn't a better all purpose fat client?</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2842670</link><pubDate>Thu, 12 Aug 2010 14:42:32 +0500</pubDate><title>Visual Fox Pro Connection</title><guid isPermaLink="false">2842670@Uncensored</guid><description><![CDATA[<html><body>

<p>I need to connect a Visual Fox Pro database to Access. Has anybody done this successfully? If so, what are the steps?</p>
<p> </p>
<p>Thanks</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2839825</link><pubDate>Wed, 04 Aug 2010 21:47:26 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2839825@Uncensored</guid><description><![CDATA[actually yes. I don't agree with what they're doing, but they're definetly
doing a better job than everybody else. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2839715</link><pubDate>Wed, 04 Aug 2010 17:18:19 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2839715@Uncensored</guid><description><![CDATA[ > Aug 4 2010 4:38pm from Ford II @uncnsrd   
 >Subject: Re:  
 > yes you can. I mean I see what you're saying, but you could write  a  

 >better all purpose fat client.   
  
 Right, like what Google is working on .... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2839703</link><pubDate>Wed, 04 Aug 2010 16:38:07 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2839703@Uncensored</guid><description><![CDATA[ yes you can. I mean I see what you're saying, but you could write  a better
all purpose fat client. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2839610</link><pubDate>Wed, 04 Aug 2010 12:47:12 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2839610@Uncensored</guid><description><![CDATA[<html><body>

<p>You can't get more 'fat' than a browser.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837917</link><pubDate>Fri, 30 Jul 2010 13:53:35 +0500</pubDate><title>Message #2837917</title><guid isPermaLink="false">2837917@Uncensored</guid><description><![CDATA[  I personal much prefer fat clients, but the world is against me on this
one. So browser and javascript is what I'm stuck with. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837670</link><pubDate>Thu, 29 Jul 2010 18:14:39 +0500</pubDate><title>Message #2837670</title><guid isPermaLink="false">2837670@Uncensored</guid><description><![CDATA[ > You got any better ideas?      
 >      
 >     
 >    
    
  
 Install WIN32s? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837647</link><pubDate>Thu, 29 Jul 2010 17:03:03 +0500</pubDate><title>Message #2837647</title><guid isPermaLink="false">2837647@Uncensored</guid><description><![CDATA[ false alarm. 
  turns out there was a typo in class2.method1 so it didn't pick it up as
a parent, so the next parents was in fact the abstract class. 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837627</link><pubDate>Thu, 29 Jul 2010 16:45:40 +0500</pubDate><title>Message #2837627</title><guid isPermaLink="false">2837627@Uncensored</guid><description><![CDATA[ Ahhh, finally a question that I can not find an answer to on the web that
I can ask you guys. 
  I have (in java) an abstract base class. 
  I have a class2 that extends base class. 
  I have a class3 that extends class2. 
  I have overridden method1 in both class2 and class3. 
  in class3.method1, I call super.method1 and the error I get is that I can't
directly call the abstract method in baseclass. 
  but I don't want to, I just want to go one level up, not all the levels
up. 
  How to do that? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837603</link><pubDate>Thu, 29 Jul 2010 15:04:51 +0500</pubDate><title>Message #2837603</title><guid isPermaLink="false">2837603@Uncensored</guid><description><![CDATA[ > Oh wow, it's the Windows 3.1 event loop all over again.   
  
 You got any better ideas? But yes, that appears to be exactly what's going
on. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837455</link><pubDate>Thu, 29 Jul 2010 10:28:52 +0500</pubDate><title>Message #2837455</title><guid isPermaLink="false">2837455@Uncensored</guid><description><![CDATA[We're not yet at a point where you can count on it being there.  Unfortunately,
we're still at a stage where you have to account for the horrible JavaScript
engine in Internet Explorer. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837295</link><pubDate>Wed, 28 Jul 2010 17:55:48 +0500</pubDate><title>Message #2837295</title><guid isPermaLink="false">2837295@Uncensored</guid><description><![CDATA[Threaded JavaScript is a relatively new development, and browser
support is iffy. It does exist, though. Google around and you'll find
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837267</link><pubDate>Wed, 28 Jul 2010 16:16:33 +0500</pubDate><title>Message #2837267</title><guid isPermaLink="false">2837267@Uncensored</guid><description><![CDATA[  
 Oh wow, it's the Windows 3.1 event loop all over again. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837265</link><pubDate>Wed, 28 Jul 2010 16:05:51 +0500</pubDate><title>Message #2837265</title><guid isPermaLink="false">2837265@Uncensored</guid><description><![CDATA[hey here's a good one. 
  are there threads in javascript? 
  I need to process a lot of shit in javascript and the browser hands which
leads me to believe that there's on thread, but that may be a firefox/ie thing,
maybe chrome is different. 
  so what I plan on doing is processing some, then setting a timer to process
more 1-5ms later to give up time to the browser so it doesn't hang, but if
I do that then more data can come in, and I can deal with that as long as
I can be sure I'm not processing while I'm adding to my queue. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837257</link><pubDate>Wed, 28 Jul 2010 16:00:44 +0500</pubDate><title>Message #2837257</title><guid isPermaLink="false">2837257@Uncensored</guid><description><![CDATA[ > Ford's getting old.   
  
 I've been old for a while. certainly most servers were multiprocessor and
hyperthreaded long before a few years ago. 
  whatever. it's done. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2837255</link><pubDate>Wed, 28 Jul 2010 15:59:47 +0500</pubDate><title>Message #2837255</title><guid isPermaLink="false">2837255@Uncensored</guid><description><![CDATA[ > We tried but couldn't resist the urge to scrub.   
  
  I resisted the urge to scrub like I resist the urge to clean anything, and
as a result I found out they don't work. 
  It must be nice to be a compulsive cleaner. 
  I'm a compulsive fixer, I find I can't leave something broken if there's
a chance I could poke around and fix it, but I just can't stand cleaning.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836985</link><pubDate>Wed, 28 Jul 2010 00:28:36 +0500</pubDate><title>Message #2836985</title><guid isPermaLink="false">2836985@Uncensored</guid><description><![CDATA[  
 Ford's getting old. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836984</link><pubDate>Wed, 28 Jul 2010 00:27:57 +0500</pubDate><title>Message #2836984</title><guid isPermaLink="false">2836984@Uncensored</guid><description><![CDATA[ >cpu for garbage collecting you'd be pretty dumb to do it all in one   
 >thread, no?   
  
 Unless you were on one of those quaint little single-core cpus that were
popular up until about 4-5 years ago. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836920</link><pubDate>Tue, 27 Jul 2010 21:09:57 +0500</pubDate><title>Message #2836920</title><guid isPermaLink="false">2836920@Uncensored</guid><description><![CDATA[ > You ever try them? They don't work.   
 >   
 >  
  
 We tried but couldn't resist the urge to scrub. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836910</link><pubDate>Tue, 27 Jul 2010 20:37:41 +0500</pubDate><title>Message #2836910</title><guid isPermaLink="false">2836910@Uncensored</guid><description><![CDATA[ well, by stop the world I presume you're also freeing up all available cpu
for garbage collecting you'd be pretty dumb to do it all in one thread, no?

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836908</link><pubDate>Tue, 27 Jul 2010 20:36:01 +0500</pubDate><title>Message #2836908</title><guid isPermaLink="false">2836908@Uncensored</guid><description><![CDATA[ > Ok, then I want the memory equivalent of one of those shower cleaners 
 
 >that you just spray on every day and never have to actually stop and   
 >scrub anything.  
 > :)   
  
 You ever try them? They don't work. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836452</link><pubDate>Mon, 26 Jul 2010 18:46:19 +0500</pubDate><title>=?UTF-8?Q?Re:=EF=BF=BD0?=</title><guid isPermaLink="false">2836452@Uncensored</guid><description><![CDATA[<html><body>

<p> </p>
<blockquote>
<div class="message_header"><span>Mo Jul 26 2010 16:54:58 EDT</span> <span>von   Spell Binder @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY">Re: Garbage collection and multi-threading.  <br /><br />I was reading that the standard Haskell runtime has the same issue: i.e. the garbage collector has to stop all threads while it does its stuff.  However, a new garbage collector is under development that will take advantage of multi-core CPUs and won't have to stop all threads when collecting.  <br />Garbage Binder  <br /></div>
<br /></div>
</blockquote>
<p>I also heard its going to be released in some not to distant future. doing a hot race with the hurd ;-P</p>
<p>no, just kidding, no clue. I'm picking my own garbage.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836423</link><pubDate>Mon, 26 Jul 2010 17:39:28 +0500</pubDate><title>Message #2836423</title><guid isPermaLink="false">2836423@Uncensored</guid><description><![CDATA[ >i.e. the garbage collector has to stop all threads while it does its   
 >stuff.  However, a new garbage collector is under development that will
 
  
 If you're doing batch processing and your only concern is throughput, stopping
the world is not a problem as long as your collector is itself parallel, i.e.,
if you have a single threaded collector and you stop the world, you don't
get that nice linear SMP scalability because beyond a certain point you're
dependent on one thread to get your work done. But if you can just mark/sweep/compact
in parallel, that part of the problem goes away and you don't have to worry
about running concurrently with application threads. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836394</link><pubDate>Mon, 26 Jul 2010 16:54:58 +0500</pubDate><title>Message #2836394</title><guid isPermaLink="false">2836394@Uncensored</guid><description><![CDATA[ Re: Garbage collection and multi-threading. 
  
 I was reading that the standard Haskell runtime has the same issue: i.e.
the garbage collector has to stop all threads while it does its stuff.  However,
a new garbage collector is under development that will take advantage of multi-core
CPUs and won't have to stop all threads when collecting. 
   Garbage Binder 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836124</link><pubDate>Sun, 25 Jul 2010 23:44:51 +0500</pubDate><title>Message #2836124</title><guid isPermaLink="false">2836124@Uncensored</guid><description><![CDATA[ > as I understand it there are different levels of cleaning, you clean  

 >once you get memory back you clean again you get more, so it depends   
 >how intensive your cleaning is.   
  
 Ok, then I want the memory equivalent of one of those shower cleaners that
you just spray on every day and never have to actually stop and scrub anything.
 :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836092</link><pubDate>Sun, 25 Jul 2010 20:46:33 +0500</pubDate><title>Message #2836092</title><guid isPermaLink="false">2836092@Uncensored</guid><description><![CDATA[ls is getting old. :-) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836069</link><pubDate>Sun, 25 Jul 2010 18:44:49 +0500</pubDate><title>Message #2836069</title><guid isPermaLink="false">2836069@Uncensored</guid><description><![CDATA[  
 I've been using it in Eclipse and it works well enough. shrug 
  
 And there are people using -XX:UseConcurrentGC on production web servers.

  
 The thing is, it *is* possible to tolerate programs that perform allocation/deallocation
while the concurrent collector is running; in a compacting GC environment,
allocation is veryvery simple because you're always allocating sequentially
down the same region, which might be implemented as one region per processor
code/thread. Allocation doesn't ever have to deal with freelists. A concurrent
collector might take advantage of this by refusing to sweep objects that are
past wherever the allocation pointer was when the current mark/sweep cycle
started... 
  
 So, in the Sun 1.6.0 world anyway, I think the new generation collector might
still be a stop-the-world thing with a concurrent old generation collector...
can't rememeber the details off top of head. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2836066</link><pubDate>Sun, 25 Jul 2010 18:16:05 +0500</pubDate><title>Message #2836066</title><guid isPermaLink="false">2836066@Uncensored</guid><description><![CDATA[ I bet it's slow as hell though, and that would be fine if it didn't hurt
performance of the applications it was collecting for, but Ibet it does. 
  And of course what if the programs make a mess faster than that one thread
can concurrently keep up with? You'd have to stop the world anyway. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835927</link><pubDate>Sat, 24 Jul 2010 20:44:59 +0500</pubDate><title>Message #2835927</title><guid isPermaLink="false">2835927@Uncensored</guid><description><![CDATA[  
 I don't know the characteristics of the concurrent collectors... there are
a few different implementations that claim to provide soft realtime capability
though. JRockit is one of those. 
  
 Erlang also has a number of unique features in that area. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835867</link><pubDate>Sat, 24 Jul 2010 11:45:01 +0500</pubDate><title>Message #2835867</title><guid isPermaLink="false">2835867@Uncensored</guid><description><![CDATA[as long as neccesary. 
 as I understand it there are different levels of cleaning, you clean once
you get memory back you clean again you get more, so it depends how intensive
your cleaning is. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835758</link><pubDate>Fri, 23 Jul 2010 23:41:52 +0500</pubDate><title>Message #2835758</title><guid isPermaLink="false">2835758@Uncensored</guid><description><![CDATA[What about interactive environments that require predictable response times?
 Just how long do we "stop the world" ? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835736</link><pubDate>Fri, 23 Jul 2010 21:34:08 +0500</pubDate><title>Message #2835736</title><guid isPermaLink="false">2835736@Uncensored</guid><description><![CDATA[  
 Ok, it's not that bad and you can collect while other threads are running.

  
 I don't know what the overhead is, but stop-the-world is more efficient in
throughput terms. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835722</link><pubDate>Fri, 23 Jul 2010 20:40:30 +0500</pubDate><title>Message #2835722</title><guid isPermaLink="false">2835722@Uncensored</guid><description><![CDATA[wouldn't help probably because you'd end up locking memory to make sure people
weren't changing the heap while you were trying to collect it. 
  It's gotta be far far more efficient to just stop everybody and make them
wait while you do your pass or two. 
  I'm sure ls will enlighten us as to how it's not that bad and you can collect
while other threads are running... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835681</link><pubDate>Fri, 23 Jul 2010 17:30:42 +0500</pubDate><title>Message #2835681</title><guid isPermaLink="false">2835681@Uncensored</guid><description><![CDATA[ > Scaling it up on the production testbed was another story. Tried it   
 >with multithreading enabled for the first time. 10 threads buried the  

 >collector in garbage and it got to the point that it was spending near 
 
 >100% CPU in the collector.   
  
 Is there any such thing as a GC environment where one thread is dedicated
to garbage collection? 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835300</link><pubDate>Thu, 22 Jul 2010 15:33:32 +0500</pubDate><title>Message #2835300</title><guid isPermaLink="false">2835300@Uncensored</guid><description><![CDATA[peekingIterator  
  
  herm. that should be called hack_to_get_around_our_original_genius_hack.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835299</link><pubDate>Thu, 22 Jul 2010 15:31:26 +0500</pubDate><title>Message #2835299</title><guid isPermaLink="false">2835299@Uncensored</guid><description><![CDATA[ death iterator, the iterator that eats objects.   
  
  (a la death bed) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835268</link><pubDate>Thu, 22 Jul 2010 13:20:51 +0500</pubDate><title>Message #2835268</title><guid isPermaLink="false">2835268@Uncensored</guid><description><![CDATA[  
 should have been called pacMan(): 
  
 http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/coll
ect/Iterators.html#consumingIterator(java.util.Iterator) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2835026</link><pubDate>Wed, 21 Jul 2010 15:54:51 +0500</pubDate><title>Message #2835026</title><guid isPermaLink="false">2835026@Uncensored</guid><description><![CDATA[  Here's why sloppy languages suck. 
  I had a global variable defined as t15imer. It should have been t15timer,
but of course javascript doesn't care if you define variables on the fly,
so it's not obvious that I'm not setting my global variable so when I cancel
a t15timer nothing happens because it's not a global variable and thus wasn't
set to the actual timer value and the timer keeps going. 
  Fucking hate sloppy languages, and this inclused non strict typing. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834939</link><pubDate>Wed, 21 Jul 2010 11:56:52 +0500</pubDate><title>Message #2834939</title><guid isPermaLink="false">2834939@Uncensored</guid><description><![CDATA[  
 Heh. 
  
 I have a new project going out the door soon. It's a big batch job with a
multithreading requirement for performance. 
  
 Development went fine with small test cases on my workstation never consuming
much memory. 
  
 Scaling it up on the production testbed was another story. Tried it with
multithreading enabled for the first time. 10 threads buried the collector
in garbage and it got to the point that it was spending near 100% CPU in the
collector. 
  
 So, I had to do a lot of tuning. Scaled the threads back to 5, tuned the
heap flags, added a bit more memory to the machine. Learned a bit about the
GC options in the process. 
  
 So I went through a few iterations and found a few places where I could win
back some constant scaling factors. For a while I had it down to spending
10-20% of CPU in the collector and that was "good enough." But I finally found
the biggest issue
and it's down to 2.5% in collection now. 
  
 Which might even be less time than a C++ program would spend doing allocation.

  
 So, the thing about GC is when you have retention issues, you often (not
always, but often) don't have unbounded growth the way you would in C/C++.
There's usually an upper bound on your memory consumption (it just might happen
that that upper bound is way more than your machine can handle ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834918</link><pubDate>Wed, 21 Jul 2010 11:10:59 +0500</pubDate><title>Message #2834918</title><guid isPermaLink="false">2834918@Uncensored</guid><description><![CDATA[ I bet if you charged everybody 5 cents for every chunk ofmemory they allocated,
they'de be lining up to return the memory with their hands held out. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834682</link><pubDate>Tue, 20 Jul 2010 21:37:58 +0500</pubDate><title>Message #2834682</title><guid isPermaLink="false">2834682@Uncensored</guid><description><![CDATA[  
 Heh. McCarthy's original LISP paper in CACM, shied away from the term "garbage
collection" for some reason, even though they were already using the term
at MIT by that time. They called it "reclamation" in the paper. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834677</link><pubDate>Tue, 20 Jul 2010 20:54:37 +0500</pubDate><title>Message #2834677</title><guid isPermaLink="false">2834677@Uncensored</guid><description><![CDATA[Ford's recycling habit seems like a good garbage collection strategy :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834525</link><pubDate>Tue, 20 Jul 2010 12:52:13 +0500</pubDate><title>Message #2834525</title><guid isPermaLink="false">2834525@Uncensored</guid><description><![CDATA[ >  Everybody instincively thinks about efficiency and doing the right   
 >thing and all that, but the reality is we all have to eat and would   
 >like a roof over our head, so exactly why should I cater to the easiest
 
 >thing that anybody can do?   
  
 In that case, use C++ :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834524</link><pubDate>Tue, 20 Jul 2010 12:51:22 +0500</pubDate><title>Message #2834524</title><guid isPermaLink="false">2834524@Uncensored</guid><description><![CDATA[ what we seem to be failing to realize is that it is about job retention.

  If only I can understand the program then I will remain employed. 
  
  Everybody instincively thinks about efficiency and doing the right thing
and all that, but the reality is we all have to eat and would like a roof
over our head, so exactly why should I cater to the easiest thing that anybody
can do? 
   
  I'm cheap. I am penny wise and pound foolish on occasiona, but it is my
penny wise that allows me to be pound foolish. 
  People who consider themselves less well off than me don't bother returning
their recyclable materials for the 5 cent deposit they paid. 
  Last time I returned cans. I got $17 for it. Not a lot, but lunch for a
few days. 
  Most people wouldn't bother because it's not worth $17 to them. 
  To them I say "I'll happily take your $17." 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834516</link><pubDate>Tue, 20 Jul 2010 12:34:01 +0500</pubDate><title>Message #2834516</title><guid isPermaLink="false">2834516@Uncensored</guid><description><![CDATA[ >My biggest beef with C++ is that everything it adds to C is designed   

 >to make code easier to write, and none of the things it adds are    
 >designed to make code easier to read.     
    
 It's designed to make it easier to not repeat yourself.   
    
 Have you ever had to work on a project where you were required to focus on
branch coverage? "Never repeat yourself" becomes way more important in those
cases.   
    
 That said C++ is a hybrid language. Most of the complexity of the language
arises out of the desire to retain strong, static typing that's largely resolved
at compile time; and to keep all of the runtime performance of C.   
  
  
 Ruby, Scala, Objective-C, and Smalltalk are all examples of languages that
probably have a lower complexity level, while still doing all they can to
support never repeating yourself. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834411</link><pubDate>Tue, 20 Jul 2010 08:33:41 +0500</pubDate><title>Message #2834411</title><guid isPermaLink="false">2834411@Uncensored</guid><description><![CDATA[<html><body>

<p>didn't see it that way yet, but it realy mirrors what i've experienced:</p>
<div class="c-head">SteveC <span class="c-permalink"><a href="http://blog.codeimproved.net/2010/07/whats-wrong-with-c/#comment-125">permalink</a></span></div>
<p>My biggest beef with C++ is that everything it adds to C is designed to make code easier to write, and none of the things it adds are designed to make code easier to read.</p>
<p>I find C++ much harder to read than C. You can usually take a C program, and examine some function in it and right away more or less tell what it’s doing. It’s not typically couched in a mountain of invisible context. With C++, you’ve generally got to read a *lot* more code to be certain you’re really understanding what a given method is really doing.</p>
<p>And, I find that C++ programs tend to have about 50% of the complexity created by the problem domain, and about 50% added by the programmer to create some elaborate class hierarchy or network, whereas the comparable C program will be more like a 70/30 or 80/20 split, with the larger fraction of complexity due to the problem domain, and the lesser fraction introduced by the programmer. In other words, it seems to me that a typical C++ program will be carrying an extra load, and not a small load, of complexity which has nothing to do with the problem being solved.</p>
<p>http://blog.codeimproved.net/2010/07/whats-wrong-with-c/</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834403</link><pubDate>Tue, 20 Jul 2010 08:12:32 +0500</pubDate><title>Message #2834403</title><guid isPermaLink="false">2834403@Uncensored</guid><description><![CDATA[<html><body>

<p>hey, maybe some link for davew</p>
<p>http://developer.yahoo.net/blog/archives/2010/07/multicore_http_server_with_nodejs.html</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834156</link><pubDate>Mon, 19 Jul 2010 12:12:42 +0500</pubDate><title>Message #2834156</title><guid isPermaLink="false">2834156@Uncensored</guid><description><![CDATA[    
 In any case, our DW team is a bunch of bumblers. Yet another last-minute
request for something that should have been planned ahead.   
  
  
 The same last-minute request that happened last time. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2834155</link><pubDate>Mon, 19 Jul 2010 12:11:33 +0500</pubDate><title>Message #2834155</title><guid isPermaLink="false">2834155@Uncensored</guid><description><![CDATA[  
 If we simply take ownership of the means of production, value add will not
be a problem. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2833964</link><pubDate>Sun, 18 Jul 2010 16:00:25 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2833964@Uncensored</guid><description><![CDATA[<html><body>

<p>I suppose a conference call could be productive if <em>everyone</em> on the call is adding some value.  Unfortunately that is seldom the case.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2832333</link><pubDate>Mon, 12 Jul 2010 22:59:24 +0500</pubDate><title>Message #2832333</title><guid isPermaLink="false">2832333@Uncensored</guid><description><![CDATA[ like that doesn't happen EVERY FREAKING DAY around here. Ticket fracker system
my ass. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2832288</link><pubDate>Mon, 12 Jul 2010 19:55:01 +0500</pubDate><title>Message #2832288</title><guid isPermaLink="false">2832288@Uncensored</guid><description><![CDATA[actually I prefer a conference call for big implementations. multiple email
threads become unwieldly quickly. 
  As it turned out our dbas lost track of a request and luckily somebody noticed
today. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2831540</link><pubDate>Sun, 11 Jul 2010 00:48:14 +0500</pubDate><title>Message #2831540</title><guid isPermaLink="false">2831540@Uncensored</guid><description><![CDATA[Sounds good to me.  I hate when people insist on using the phone for business
that can easily be conducted over email. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2831459</link><pubDate>Sat, 10 Jul 2010 12:41:29 +0500</pubDate><title>Message #2831459</title><guid isPermaLink="false">2831459@Uncensored</guid><description><![CDATA[ We're doing a release of a huge pile of software today. Started at 8am, and
I think we're almost done working out the problems. 
  We don't have a phone call we just email what's going on 
 . I have sent 110 emails so far since 8am.  
  Sometimes, I amaze myself. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2831456</link><pubDate>Sat, 10 Jul 2010 12:21:51 +0500</pubDate><title>Message #2831456</title><guid isPermaLink="false">2831456@Uncensored</guid><description><![CDATA[<html><body>

<p>yea, java performance for testing &amp; development is ok, but at realtime its just fast and slink.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2831201</link><pubDate>Fri, 09 Jul 2010 11:56:34 +0500</pubDate><title>Message #2831201</title><guid isPermaLink="false">2831201@Uncensored</guid><description><![CDATA[  
 valgrind slows your code down. it's a useful tool that has its place in the
toolbox, to be sure. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2831142</link><pubDate>Fri, 09 Jul 2010 08:34:00 +0500</pubDate><title>Message #2831142</title><guid isPermaLink="false">2831142@Uncensored</guid><description><![CDATA[<html><body>

<p>but the boehm-gc debug won't show you uninitialized variable access as valgrind does for free while searching leaks.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2831141</link><pubDate>Fri, 09 Jul 2010 08:30:52 +0500</pubDate><title>Message #2831141</title><guid isPermaLink="false">2831141@Uncensored</guid><description><![CDATA[<html><body>

<p>now thats a cute list:</p>
<p>http://css.dzone.com/articles/how-be-worse-programmer</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830591</link><pubDate>Wed, 07 Jul 2010 16:16:23 +0500</pubDate><title>Message #2830591</title><guid isPermaLink="false">2830591@Uncensored</guid><description><![CDATA[ After a while all this stuff depresses me. We're so far away from the simple
stuff I enjoyed so much, 
  When I was in sanfrancisco I noticed that I understodd the trolley system.
It was simple enough that I understood every little bit of it, and if had
to make a transit system, that's probably the level of technology of what
I'd come up with. 
  I mean I dreamt up a wonderful rotary engine concept, but I couldn't actually
design it right or build it. 
  Same thing with programming. I get all these high minded concepts (think
about starting in assembly, objects are a pretty high minded concepts) but
I would never have thought of them myself, I'd have just written a java sized
library of everything I'd ever have need to do, and it would work and I wouldn't
have to worry about garbage collecting or closures or anything like that.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830493</link><pubDate>Wed, 07 Jul 2010 11:11:30 +0500</pubDate><title>Message #2830493</title><guid isPermaLink="false">2830493@Uncensored</guid><description><![CDATA[  
 I'd rather run boehm-gc in debug mode than valgrind ;) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830481</link><pubDate>Wed, 07 Jul 2010 10:19:17 +0500</pubDate><title>Message #2830481</title><guid isPermaLink="false">2830481@Uncensored</guid><description><![CDATA[ you'll certainly pay a penalty for reference counting everything, so I try
and avoid that. I prefer to put objects on the stack or make it obvious who
owns what object and let the destructors do their thing. 
  I know as soon as you have to share data that stops working but by and large,
most of your stuff (at least in my experience) can be handled without reference
counting, and just making sure everybody knows who owns what. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830432</link><pubDate>Wed, 07 Jul 2010 05:50:22 +0500</pubDate><title>Message #2830432</title><guid isPermaLink="false">2830432@Uncensored</guid><description><![CDATA[<html><body>

<p>i'm still a big fan of no-GC. I don't even like smart pointers.</p>
<p>Since one has to learn how to do it anyways, i'd rather let valgrind tell me that my code structure was wrong and something was still accessed after freed, or not freed at all, than having to figure out why the GC doesn't do its job or drags down performance under certain circumstances...</p>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830236</link><pubDate>Tue, 06 Jul 2010 18:31:43 +0500</pubDate><title>Message #2830236</title><guid isPermaLink="false">2830236@Uncensored</guid><description><![CDATA[ >  It's not one of those obviously this-is-the-right-answer kinda       
 >things. It does justify the the-computer-is-the-tool argument though.  
    
      
 Basically, the lazy GC versus reference-counting-for-every-object-in-the-system
debate boils down to, if you defer the GC work until later instead of tracking
it on every pointer update, for typical code you have less work to do, by
the time you actually do it. And the "make it a first class language feature"
argument boils down to, "never repeat yourself."     
    
  
  
 Obviously there are tradeoffs involved and when you need every ounce of performance,
manual might be king, but I'd start with the "premature optimization" premise.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830191</link><pubDate>Tue, 06 Jul 2010 16:10:23 +0500</pubDate><title>Message #2830191</title><guid isPermaLink="false">2830191@Uncensored</guid><description><![CDATA[ > http://www.hpl.hp.com/personal/Hans_Boehm/gc/issues.html   
  
  It took many years for me to be sold on the idea that higher level languages
are a better deal than pure assembly, and it will likewise take many years
for me to drink the garbage collection koolaid, although sadly I think I see
it in my distant future. 
  On the downside java has made me lazy and sloppy and it sucks. 
  
  Either way though, I'm not there yet. 
  It's not one of those obviously this-is-the-right-answer kinda things. It
does justify the the-computer-is-the-tool argument though. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830163</link><pubDate>Tue, 06 Jul 2010 14:16:39 +0500</pubDate><title>Message #2830163</title><guid isPermaLink="false">2830163@Uncensored</guid><description><![CDATA[La de da de,

http://portal.acm.org/citation.cfm?id=802797

da.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2830135</link><pubDate>Tue, 06 Jul 2010 13:50:44 +0500</pubDate><title>Message #2830135</title><guid isPermaLink="false">2830135@Uncensored</guid><description><![CDATA[  
 la de da, 
  
 http://www.hpl.hp.com/personal/Hans_Boehm/gc/issues.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2829921</link><pubDate>Mon, 05 Jul 2010 22:21:10 +0500</pubDate><title>Message #2829921</title><guid isPermaLink="false">2829921@Uncensored</guid><description><![CDATA[ >sounds great from a language point of view, but I'd never want to   
 >actually use one knowing what the compiler is going to have to do to   
 >make it work.   
  
 Well the bad news is, you're using Java, so you're already using that crap
whether you like it or not... the worse news is, Java has all this runtime
devirtualization crap that is basically there to work around the fact that
the language leads you towards writing every method as a virtual method. But
basically the state of the art in that regard is something called a Polymorphic
Inline Cache or PIC. In the HotSpot client VM it really sucks - virtual method
call performance runs from 5x to 14x slower than what you should be able to
achieve if the call was fully inlined the way you want it. It's much better
in HotSpot server; the runtime is able to fully inline your crap, reliably.
But only if each call site can only have 1 or
2 receivers. More than that, and the runtime falls back on plain old dynamic
dispatch. 
  
 Purportedly Project Lambda (the add-closures-to-Java project) is actually
going to fix this, and fix it in a way that seems to me to be actually novel,
there might not actually be any prior art for it. Fixing the polymorphic inlining
problem by allowing curried functions (sorry for the LISPism, go Google it)
to be inlined in many more cases. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2829920</link><pubDate>Mon, 05 Jul 2010 22:11:01 +0500</pubDate><title>Message #2829920</title><guid isPermaLink="false">2829920@Uncensored</guid><description><![CDATA[  
 Well, the funny thing is, when you start implementing certain patterns (like
using the Ropes library instead of a strings class) then you will be forced
to either manually implement reference counting, or rely on GC.; certain data
structures simply can't work without one or the other. And there some sound
reasons to prefer GC over reference counting; one of those is performance
(although it's a time/space tradeoff for sure.) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2829530</link><pubDate>Sun, 04 Jul 2010 12:40:10 +0500</pubDate><title>Message #2829530</title><guid isPermaLink="false">2829530@Uncensored</guid><description><![CDATA[ > How does this relate to garbage collection?  In a garbage collected   
 >environment, closures can (a) capture variables from the lexical scope 
 
 >of the function they are nested within, and then (b) escape, granting  

 >those variables a longer lifespan than they would otherwise have had.  

  
  And it just seems so disgusting to me. It's like taking the structure of
your nicely structured program and ripping it out and throwing it on the floor
and letting it writhe there until the garbage collector happens to notice
it, and meanwhile there's a big fucking void of a hole in the middle of your
program where that object used to be. 
  Just rubs me the wrong way. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2829529</link><pubDate>Sun, 04 Jul 2010 12:38:30 +0500</pubDate><title>Message #2829529</title><guid isPermaLink="false">2829529@Uncensored</guid><description><![CDATA[ >Is that how LISP does it?  I guess I'm not understanding this well   
 >enough because I'm imagining stuff that would be better handled by   
 >putting it on the stack.   
  
  I don't know (or at least remember) the internals of lisp, but you have
to get out of the mindset of code actually translating to assembly and start
thinking of it as a language that implements concepts. Of course the compiler
and the running performance takes the hit, but imagine thinking of a program
in a way that solves problems rather than one that translates to the hardware
you know about. 
  Personally, I can't do that, I'm too buried in the know-how of my machine,
but I accept that there are people who actually thingk in language and want
to accomplish true objective problem solving not problem-solving-the-computer's-way.

  I also think it's a little stupid since the hardware really is a real problem
to be
dealt with, but that's me. I'm sure those people think what I do is stupid.
And that's fine. 
  
  The idea of a closure or any kind of free floating object-in-space sounds
great from a language point of view, but I'd never want to actually use one
knowing what the compiler is going to have to do to make it work. 
  Adding it to languages just makes the language suck more just like opererator
overloads, but again that's me. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2829528</link><pubDate>Sun, 04 Jul 2010 12:34:39 +0500</pubDate><title>Message #2829528</title><guid isPermaLink="false">2829528@Uncensored</guid><description><![CDATA[ > So, when he says "long lived closures" he actually means "I want to   
 >hide state behind this garbage collected callback object that acts like
 
 >a function, pass it to somebody else who will migrate it wherever, and 
 
 >then forget about it"   
  
  Like a slob. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2827287</link><pubDate>Sat, 26 Jun 2010 10:47:19 +0500</pubDate><title>Message #2827287</title><guid isPermaLink="false">2827287@Uncensored</guid><description><![CDATA[  
 closures and objects are isomorphic on some level: a closure is just an object
that merely implements one method, "apply." In principle, a compiler/runtime
could implement closures on top of OOP or OOP on top of closures. LISP has
the CLOS, Common Lisp Object System, and various attempts in Scheme. They
probably don't feel a lot like what C++/Java programmers are accustomed to.

  
 How does this relate to garbage collection? In a garbage collected environment,
closures can (a) capture variables from the lexical scope of the function
they are nested within, and then (b) escape, granting those variables a longer
lifespan than they would otherwise have had. So, it becomes an object that
goes on the heap. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2827102</link><pubDate>Fri, 25 Jun 2010 17:56:48 +0500</pubDate><title>Message #2827102</title><guid isPermaLink="false">2827102@Uncensored</guid><description><![CDATA[Is that how LISP does it?  I guess I'm not understanding this well enough
because I'm imagining stuff that would be better handled by putting it on
the stack. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826418</link><pubDate>Thu, 24 Jun 2010 00:19:43 +0500</pubDate><title>Message #2826418</title><guid isPermaLink="false">2826418@Uncensored</guid><description><![CDATA[ >  That just means you're used to C and are having a hard time getting  

 >used to java. Has nothing to do with java.   
  
 Actually, jwz was a Common Lisp programmer before he worked at Netscape.
Previously he was at Lucid, working on Lucid Emacs. He's one of those guys
who really got hooked on LISP and is still waiting for the rest of the world
to catch up--and for computers to become fast enough for LISP to work. Which
they've finally done, more or less. 
  
 So, when he says "long lived closures" he actually means "I want to hide
state behind this garbage collected callback object that acts like a function,
pass it to somebody else who will migrate it wherever, and then forget about
it" 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826417</link><pubDate>Thu, 24 Jun 2010 00:15:48 +0500</pubDate><title>Message #2826417</title><guid isPermaLink="false">2826417@Uncensored</guid><description><![CDATA[  
 typedef is more glaringly lacking in the post-generics Java. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826234</link><pubDate>Wed, 23 Jun 2010 15:54:20 +0500</pubDate><title>Message #2826234</title><guid isPermaLink="false">2826234@Uncensored</guid><description><![CDATA[ I miss typedef. If I have integers that represent something, I can't make
type assertions about them except that they are ints. Unless I'm willing to
swaddle them in blankets by wrapping Integer objects around them.  
   
 This translates roughly to "I don't want to write in an OO style in this
OO language." 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826233</link><pubDate>Wed, 23 Jun 2010 15:50:52 +0500</pubDate><title>Message #2826233</title><guid isPermaLink="false">2826233@Uncensored</guid><description><![CDATA[  Some of thos 'flaws' are not flaws in java but flaws in him. 
  
   (I can live without long-lived closures, but I find lack of function pointers
a huge pain.)   
  
  That just means you're used to C and are having a hard time getting used
to java. Has nothing to do with java. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826226</link><pubDate>Wed, 23 Jun 2010 15:42:16 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2826226@Uncensored</guid><description><![CDATA[ is that all he is? 
  the initials jwz sounded familiar but he didn't actually DO anything? 
  
  
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826223</link><pubDate>Wed, 23 Jun 2010 15:39:41 +0500</pubDate><title>Re:</title><guid isPermaLink="false">2826223@Uncensored</guid><description><![CDATA[<html><body>

<p>IMNSHO his "fame" is not well-deserved.  He's a bitter, cranky loudmouth who thinks that the world should have elevated him to god status because he was a part of the early Netscape team.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826219</link><pubDate>Wed, 23 Jun 2010 15:34:23 +0500</pubDate><title>Message #2826219</title><guid isPermaLink="false">2826219@Uncensored</guid><description><![CDATA[ >Java. But it seems like he'd be really happy with Scala.   
  
  Which was the second thing I thought of. If he's gods gift to language design,
why doesn't he write one?  
  
  Maybe this person is famous but I don't nkow him and am not impressed. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826213</link><pubDate>Wed, 23 Jun 2010 15:33:22 +0500</pubDate><title>Message #2826213</title><guid isPermaLink="false">2826213@Uncensored</guid><description><![CDATA[ >At the beginning he basically declares that the fact that it's a   
 >garbage collected runtime makes up for all of the language's   
 >deficiencies.  Then at the end he has a postscript which delcares that 
 
  
  Right, and in my view, this makes him a shitty programmer if he thinks being
able to be an irresponsible developer is a good thing.  
   But that's just me. 
  Java has made me sloppy and it's going to hurt me in my next job. 
   
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826207</link><pubDate>Wed, 23 Jun 2010 15:18:17 +0500</pubDate><title>Message #2826207</title><guid isPermaLink="false">2826207@Uncensored</guid><description><![CDATA[<html><body>

<p>he, theres the german saying</p>
<p>wer nix wird wird wirt.</p>
<p>which states exactly that, if you don't get a descent job, you'll end up running a pub.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826178</link><pubDate>Wed, 23 Jun 2010 14:04:35 +0500</pubDate><title>Message #2826178</title><guid isPermaLink="false">2826178@Uncensored</guid><description><![CDATA[At the beginning he basically declares that the fact that it's a garbage collected
runtime makes up for all of the language's deficiencies.  Then at the end
he has a postscript which delcares that he went back to writing in C. 
  
 Now, of course, we know that he switched from writing code to selling beer.
 Perhaps if we created a language called "Beer" (produced by a company whose
ticker symbol will later be changed to BEER) it would encourage him to begin
coding again. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826097</link><pubDate>Wed, 23 Jun 2010 11:40:28 +0500</pubDate><title>Message #2826097</title><guid isPermaLink="false">2826097@Uncensored</guid><description><![CDATA[  
 That's why I said I must have missed it. It's certainly dated. Several of
the things he writes about have been fixed. Closures (another thing he mentioned)
are being implemented now. The major outstanding item is the lack of a numeric
tower. That will probably never be implemented in Java. But it seems like
he'd be really happy with Scala. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826084</link><pubDate>Wed, 23 Jun 2010 11:21:34 +0500</pubDate><title>Message #2826084</title><guid isPermaLink="false">2826084@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, I don't think its that new?</p>
<p>I think he wrote it when they tried to change parts of netscape to java ;-P</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2826071</link><pubDate>Wed, 23 Jun 2010 10:58:13 +0500</pubDate><title>Message #2826071</title><guid isPermaLink="false">2826071@Uncensored</guid><description><![CDATA[  
 a jwzrant I must have missed: java sucks. 
  
 http://www.jwz.org/doc/java.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2824997</link><pubDate>Mon, 21 Jun 2010 05:55:08 +0500</pubDate><title>Message #2824997</title><guid isPermaLink="false">2824997@Uncensored</guid><description><![CDATA[<html><body>

<p>hm, appearantly gmail know how to drag &amp; drop upload attachment via modern browsers:</p>
<p>http://gmailblog.blogspot.com/2010/06/tip-5-things-you-may-not-know-you-can.html</p>
<p>probably a thing to copy?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2824713</link><pubDate>Sun, 20 Jun 2010 09:14:01 +0500</pubDate><title>Message #2824713</title><guid isPermaLink="false">2824713@Uncensored</guid><description><![CDATA[This would have been in 1994 or thereabouts ... I don't remember exactly when
IBM got involved. 
  
 I always thought it was funny that the Notes server *looked* most at home
on the Netware console ... and that was one of the first platforms for which
they dropped support.  I enjoyed the flip-through-all-the-server-consoles
of Netware. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2824626</link><pubDate>Sat, 19 Jun 2010 21:22:44 +0500</pubDate><title>Message #2824626</title><guid isPermaLink="false">2824626@Uncensored</guid><description><![CDATA[ that might be IBM's fault, not his. although that was before IBM bought wasn't
it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2824625</link><pubDate>Sat, 19 Jun 2010 21:20:22 +0500</pubDate><title>Message #2824625</title><guid isPermaLink="false">2824625@Uncensored</guid><description><![CDATA[It's ironic since he seems to have a penchant for labyrinthine software. 
Bloated Goats is the only software package I have ever *failed* to figure
out how to install and configure. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2824498</link><pubDate>Sat, 19 Jun 2010 12:55:55 +0500</pubDate><title>Message #2824498</title><guid isPermaLink="false">2824498@Uncensored</guid><description><![CDATA[The fact that he used the phrase "introduces security challenges" instead
of "introduces security problems" which is how most programmers would say
it (as opposed to managers)  I'm not so sure he sees it as a mistake of his.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2823637</link><pubDate>Thu, 17 Jun 2010 13:12:33 +0500</pubDate><title>Message #2823637</title><guid isPermaLink="false">2823637@Uncensored</guid><description><![CDATA[omg.  This quote: 
  
 "Complexity kills.  It sucks the life out of developers, it makes products
difficult to plan, build and test, it introduces security challenges, and
it causes end-user and administrator frustration." 
  
 ... is from Ray Ozzie, who created LOTUS NOTES. 
  
 I really *hope* he was speaking in the "learn from my mistakes" sense. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2823588</link><pubDate>Thu, 17 Jun 2010 12:09:10 +0500</pubDate><title>Message #2823588</title><guid isPermaLink="false">2823588@Uncensored</guid><description><![CDATA[<html><body>

<p>http://www.devtopics.com/101-great-computer-programming-quotes/</p>
<p>*roflamo*</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2822177</link><pubDate>Mon, 14 Jun 2010 05:49:23 +0500</pubDate><title>Message #2822177</title><guid isPermaLink="false">2822177@Uncensored</guid><description><![CDATA[  
 If you get down into the internals, java.lang.reflect autogenerates accessor
stubs every time you reflectively invoke a constructor or a method. Same with
field access, maybe. So code generation is a first class language feature,
although not on the same level as C#. Anyway, the other issue with java is
that due to single inheritance, well designed classes tend to evolve towards
implementations of SAM (Single Abstract Method) interfaces; basically, functors
or function objects. So you get one useful method packaged up in, its own
weight in setters and getters. This can actually be a serious readability
issue - you can't get at a glance what is the actual code and what is the
fluff. Past time for the language to get C# or better yet Scala style properties.

]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2822134</link><pubDate>Mon, 14 Jun 2010 03:23:42 +0500</pubDate><title>Message #2822134</title><guid isPermaLink="false">2822134@Uncensored</guid><description><![CDATA[<html><body>

<p>i'd call all those code generator frameworks preprocessor too ;-)</p>
<blockquote>
<div class="message_header"><span>So Jun 13 2010 21:05:43 EDT</span> <span>von   LoanShark @ Uncensored </span></div>
<div class="message_content">
<div class="fmout-JUSTIFY"><br />I guess it was only a matter of time:  <br /><br /><a href="http://projectlombok.org/features/index.html" target="webcit01">http://projectlombok.org/features/index.html</a> <br /></div>
<br /></div>
</blockquote>
<p> </p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2822058</link><pubDate>Sun, 13 Jun 2010 22:09:15 +0500</pubDate><title>Message #2822058</title><guid isPermaLink="false">2822058@Uncensored</guid><description><![CDATA[]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2822056</link><pubDate>Sun, 13 Jun 2010 22:03:54 +0500</pubDate><title>Message #2822056</title><guid isPermaLink="false">2822056@Uncensored</guid><description><![CDATA[just what java needs, a precompiler. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2822032</link><pubDate>Sun, 13 Jun 2010 21:05:43 +0500</pubDate><title>Message #2822032</title><guid isPermaLink="false">2822032@Uncensored</guid><description><![CDATA[  
 I guess it was only a matter of time: 
  
 http://projectlombok.org/features/index.html 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2821591</link><pubDate>Sat, 12 Jun 2010 04:40:47 +0500</pubDate><title>Message #2821591</title><guid isPermaLink="false">2821591@Uncensored</guid><description><![CDATA[<html><body>

<p>just found a new ff plugin via reviewboard:</p>
<p>https://addons.mozilla.org/en-US/firefox/addon/10869/</p>
<p>shows json structures nicely unwrapped and indented.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820938</link><pubDate>Thu, 10 Jun 2010 15:27:45 +0500</pubDate><title>Message #2820938</title><guid isPermaLink="false">2820938@Uncensored</guid><description><![CDATA[DEBLITZ! 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820932</link><pubDate>Thu, 10 Jun 2010 15:14:52 +0500</pubDate><title>Message #2820932</title><guid isPermaLink="false">2820932@Uncensored</guid><description><![CDATA[ I had a nice long winded message after that quote too. Looks like quoting
web messages with non ascii characters in them are getting truncated. 
  Anyway ... what is it about CLR that makes it more common than JVM: 
  
  I had responded: "Microsoft's marketing department."  
  
  Then I went on to say something along the lines of: "What's the point of
learning 3 languages that all compile to the same bytecode since there can't
be much advantage to any of the languages over the others if they  compile
down to the same bytecode. 
  I think I also said something like: "Why learn three languages when you
can learn one."  
  
  It also now occurs tome that it would be a neat way to transfer source between
lanaguages. 
  I've seen java decompilers work so well, there's almost no difference between
my source code and the decompile. 
   
 So Imagine you wrote decompilers for CLR for different languages.
You could write in VB, compile it, then decompile it into fortran. 
  How cool would that be. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820820</link><pubDate>Thu, 10 Jun 2010 09:32:35 +0500</pubDate><title>Message #2820820</title><guid isPermaLink="false">2820820@Uncensored</guid><description><![CDATA[<html><body>

<p>I think its the see-carpet crowd who started doing lexer for other languages; thoug we have several examples of this...</p>
<p>there was the contest between the perl and the python guys which one would first be able to execute source from the other language on its interpreter...</p>
<p>theres jython...</p>
<p>otos we have IronRuby, IronPython, C(++)/managed</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820804</link><pubDate>Thu, 10 Jun 2010 09:11:28 +0500</pubDate><title>Message #2820804</title><guid isPermaLink="false">2820804@Uncensored</guid><description><![CDATA[ >prove otherwise?  What is it about CLR that supposedly makes it more  
 >"common" than JVM?  
  
 Microsoft's marketing department. 
   
  There's no reason other languages can't compile down to java bytecode, just
nobody's bothered (or maybe not) The better question is:why learn 3 languages
when you only need to learn one, especially if the other two don't buy you
anything since they compile down to the same bytecode anyway... 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820787</link><pubDate>Thu, 10 Jun 2010 08:22:19 +0500</pubDate><title>Message #2820787</title><guid isPermaLink="false">2820787@Uncensored</guid><description><![CDATA[<html><body>

<p>So, the Clojure language compiles down to Java bytecode?</p>
<p>I've always wondered why the .NET camp kept saying that one advantage of .NET over Java was that they had multiple languages that all compiled down to the same bytecode, and Java doesn't.  Does this prove otherwise?  What is it about CLR that supposedly makes it more "common" than JVM?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820747</link><pubDate>Thu, 10 Jun 2010 04:18:12 +0500</pubDate><title>Message #2820747</title><guid isPermaLink="false">2820747@Uncensored</guid><description><![CDATA[<html><body>

<p>http://muckandbrass.com/web/display/~cemerick/2010/06/07/Results+from+the+State+of+Clojure%252C+Summer+2010+Survey</p>
<p>another language backened by the java interpreter?</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820725</link><pubDate>Thu, 10 Jun 2010 02:35:42 +0500</pubDate><title>Message #2820725</title><guid isPermaLink="false">2820725@Uncensored</guid><description><![CDATA[<html><body>

<p>Something like</p>
<p>insert into catalog_product_entity_media_gallery (column, names, here) select foo, bar, baz, 70, entity_id, value from <span class="st0">catalog_product_entity_varchar where entity_id in (...)<br /></span></p>
<p>would probably be about right, depending on what "(index)" is and where it comes from.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820681</link><pubDate>Wed, 09 Jun 2010 21:56:00 +0500</pubDate><title>Message #2820681</title><guid isPermaLink="false">2820681@Uncensored</guid><description><![CDATA[ I think I get at least some of it.  
  So first you have to remove the existing matching entity ids from the second
table... 
  delete from catalog_product_entity_media_gallery where entity_id in (select
entity_id from catalog_product_entity_varchar)  
  
  Hopefully your database is smart enough to do subselects, I think even mysql
does that nowadays. 
   
 Now you're saying when you get a web request you want to insert 3 rows? or
is it more than that 
 ? 
  Oh I see you already have the delete part, I think. 
  Okay from the script description you want to make rows in the media_gallery
table for each product where entity id = product id?  
  I'm still confused I'd need to see the schema. 
  
  But anyway, there are two ways to insert rows into a table: 
  1) a bunch of insert statments in a loop, which is your better bet in this
case 
  2) an insert into / select into, which allows you
to batch insert a bunch of rows, but you already have to have some of the
information your inserting in the database somewhere. You may be able to contrive
that information with a subselect or two, but this is more complex than you
need to be doing in this case, so I'd just like you said, make an array and
loop inserts. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820646</link><pubDate>Wed, 09 Jun 2010 19:34:23 +0500</pubDate><title>Message #2820646</title><guid isPermaLink="false">2820646@Uncensored</guid><description><![CDATA[An SQL injection invintation it may be but it's a one or two or three time
use script for our internal use only.   
    
 Here's what's going on:   
 The shopping cart software I installed for a client is using an SQL database
for the product directory like most of them. One table has info about the
products and rows for what image that product is using. That's fine, and I
have that covered.   
    
 The other table is for the admin-side with what pictures are available as
options for the product if you edit it. You can manually define the images
and that will work fine but if you don't put the images in the second table
if you edit the product the images will disappear because on the edit page
"no image" will be selected and the only choice.   
    
 Each image is used for many products and the store needs 3 images per product.
The way I did it was   
 image.jpg - Large file   
 image_.jpg
- Small version of file   
 image_t.jpg - Thumbnail image   
    
 In the script if you call script.php?product=42, 58&img=coffee   
    
 ...it will do UPDATE catalog_product_entity_varchar SET value\"/images".$img.".jpg\"
WHERE entity_id in (".$product.") and attribute_id=493   
    
 $img is the img argument from URL and $product is the product argument from
the URL. This query is actually run 3 times with different attribute_id. 493
is the large image attribute_id. 109 is the small, and 106 is the thumbnail.
   
    
 This part of the script works because those rows are always going to be there
even if the product hasn't ever had an image associated with it. It will just
be no_selection in the value field.    
    
 The next table is the catalog_product_entity_media_gallery table where the
images have to be listed as options. Here we need to first find all the entity_id
matches and remove
them because there may have been some other placeholder images, etc. to clean
up.    
    
 Then I need to create rows that look like   
 (index)      70      42      /images/coffee.jpg   
 (index)      70      42      /images/coffee_.jpg   
  
  
 ...etc. for each combination of product in the URL and each different variation
of the filename given in the URL. The 42 there is an example entity_id/product
number and the 70 is just an arbitrary ID that all records have. This is whhere
I can't figure out how to do the script.  
  
 I guess I could take the string and turn it into an array somehow and make
a for or while loop that does the rest but I am quite a bit unsure of how
to go about that. 
  
 Here is ze code that I have so far: http://pastebin.com/WrWrVcrK 
  
 Any advice on how to finish is greatly appreciated. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820540</link><pubDate>Wed, 09 Jun 2010 14:59:59 +0500</pubDate><title>Message #2820540</title><guid isPermaLink="false">2820540@Uncensored</guid><description><![CDATA[ but as for your actual question, I don't understand it. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820539</link><pubDate>Wed, 09 Jun 2010 14:58:53 +0500</pubDate><title>Message #2820539</title><guid isPermaLink="false">2820539@Uncensored</guid><description><![CDATA[ > Jun 9 2010 8:43am from dothebart @uncnsrd   
 >looks like an sql injection invitation to me.  
  
 That was my first thought too. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820432</link><pubDate>Wed, 09 Jun 2010 09:04:03 +0500</pubDate><title>Message #2820432</title><guid isPermaLink="false">2820432@Uncensored</guid><description><![CDATA[<html><body>

<p>http://agile.dzone.com/articles/survey-finds-developers-would  rather do taxes than test their software ;-)</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820419</link><pubDate>Wed, 09 Jun 2010 08:43:31 +0500</pubDate><title>Message #2820419</title><guid isPermaLink="false">2820419@Uncensored</guid><description><![CDATA[<html><body>

<p>looks like an sql injection invitation to me.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2820396</link><pubDate>Wed, 09 Jun 2010 07:51:54 +0500</pubDate><title>Message #2820396</title><guid isPermaLink="false">2820396@Uncensored</guid><description><![CDATA[I seek the gentle guidance of someone with SQL fu.   
    
 I'm trying to write a script, which I'll pastebin if someone tells me it
will help, but yeah... Part of the script gets data from the URL as text I
think ( I wrote it but that doesn't mean I understand how it works!) for the
purpose of putting it into an sql query   
    
 URL can be   
 http://localhost/script.php?product=42, 53, 84, 100 (just like that with
the spaces) and that turns the query into this   
    
 SELECT * from catalog_product_entity_media_gallery where entity_id in (42,
53, 84, 100)     
    
 That works perfectly for my purposes and it's method is naturl to the person
who's going to be actually calling the script.    
    
 My problem is that later we drop all the rows that match this query and we
need to recreate them. Specifically we need to create three rows for each
entity_id and assign a different value to
each, the value coming off of another URL arguement. The value will have arbitrary
info added to it that should look like this (Say ?product=100&img=coffee)
  
 100     coffee.jpg   
 100     coffee_.jpg   
 100     coffee_t.jpg   
    
 I have to do this in another table as well but I just used UPDATE because
in that table, there's an attribute_id that's different for each of the three
records, and the records are guaranteed to exist in that table. In the catalog_product_entity_media_gallery
table the records may or may not exist, so my logic was to delete existing
records then make new ones.   
  
  
 Hopefully this makes some sense to someone out there :) 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2817325</link><pubDate>Tue, 01 Jun 2010 08:41:02 +0500</pubDate><title>Message #2817325</title><guid isPermaLink="false">2817325@Uncensored</guid><description><![CDATA[<html><body>

<p>Just found a bunch of json toolies:</p>
<p>http://jsonformatter.curiousconcept.com/<br />http://braincast.nl/samples/jsoneditor/<br />http://json.parser.online.fr/</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2815766</link><pubDate>Wed, 26 May 2010 15:33:47 +0500</pubDate><title>Message #2815766</title><guid isPermaLink="false">2815766@Uncensored</guid><description><![CDATA[<html><body>

<p>no. I took the wrong conclusion.</p>
<p>it was the java crap xml parser that didn't like linebreaks in the soap xml part.</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2815683</link><pubDate>Wed, 26 May 2010 10:54:07 +0500</pubDate><title>Message #2815683</title><guid isPermaLink="false">2815683@Uncensored</guid><description><![CDATA[  really? chunking is a lower level protocol thing, it is unaware of mime-ness.

  That doesn't sound right. 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2815674</link><pubDate>Wed, 26 May 2010 10:44:47 +0500</pubDate><title>Message #2815674</title><guid isPermaLink="false">2815674@Uncensored</guid><description><![CDATA[<html><body>

<p>so... multipart mime chunked http replies have to have the mime headers at the start of a chunk.</p>
<p>a little easier to find out with bash &amp; netcat instead of real c-coding...</p>
</body></html>
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2814453</link><pubDate>Sat, 22 May 2010 10:42:40 +0500</pubDate><title>Message #2814453</title><guid isPermaLink="false">2814453@Uncensored</guid><description><![CDATA[      
 ooops, looks like you "can't apply generic programming" in C++ ;)     
    
  
  
 http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1385.htm 
]]></description></item><item><link>http://uncensored.citadel.org/readfwd?go=Programming?start_reading_at=2813878</link><pubDate>Fri, 21 May 2010 07:30:19 +0500</pubDate><title>Message #2813878</title><guid isPermaLink="false">2813878@Uncensored</guid><description><![CDATA[<html><body>

<p>so we've got a new kid in town:</p>
<p>http://blog.llvm.org/2010/05/clang-builds-boost.html</p>
<p>as egcs showed way back open source monopolies aren't good either.</p></body></html>
]]></description></item></channel></rss>

