text:
Last week, CORBA-lover Michael Meeks released some slides that caused something of a stir amongst some in the KDE community. In his slide, Michael Meeks attempted to make the case for GNOME as the only viable desktop on Unix by directing the heat of his argument at the cost of Trolltech's Qt -- the wonderful cross-platform toolkit on which KDE is based -- for proprietary development. Rising up to the challenge, George Staikos has written a nice article that compares the cost of Qt vs GTK in the real world.
George successfully makes his case independent of the specifics, but there are few things in particular about Michael's slide that bother me. For one, Michael seems to be making a skewed comparison of GNOME to Qt as opposed to comparing GNOME/GTK to KDE/Qt. If comparing KDE to GNOME, then certainly two of the three points in favour of GNOME count for KDE.
Other than the points George makes in Qt's favour (check out the dirt on the new tab widget!), and the fact that KDE more or less maintains a copy of Qt in CVS, KDE has a very open development model, and I would even argue that in many ways KDE development is more open and accommodating to contributors than the GNOME development model which is heavily influenced by the commercial powers behind the GNOME Foundation. Personally, I have also seen a lot of whining about how closely-controlled (by Red Hat) GTK development is. And, of course, the ABI/API stability Michael claims for GNOME certainly applies just as equally to KDE/Qt.
Another thing that puzzles me are the prices Michael quotes for proprietary Qt development. He is talking about proprietary development on Unix, and yet he quotes the prices for Qt on three platforms (Mac/Windows/X11) which is twice the price of Qt for X11 alone. And if he does that, he really ought to take into account the state of GTK on Windows and Mac (ports of which do indeed exist). But these quibbles are sort of besides the point, since indeed Qt does cost something for proprietary development whereas GTK is gratis up front.
So, by all means, read George's article carefully, then tell us what you think about this whole matter. Have you used Qt for free or proprietary development? If so, what have been your experiences?
Funny. Michaels slides mostly speak about issues KDE already solves - and this is the platform that is supposed to be cheaper to develop on (let alone using it) ?
Please stop comparing KDE and Gnome, one war is more then enough
Cheers to that, brother.
10 developers cost 60.000$ per year (75.000$ is pretty the top for paying developers).
That's 1.200.000$ for a 2 year project.
Getting the most out of Qt one needs "Qt Enterprise Edition TrioPack".
That's 37.200$ for the first,11.500$ for the second year and 48.700$ for the whole project.
In this calculation Qt costs 4% the developers cost (and maybe 3% of the project costs).
For gaining any benefit for using Qt one has to finish the development one month earlier. Which is possible by using Qt (as it's a damn good tool). Than one saves 50.000$. But saving development time is very much dependend of the project, and Qt may only be used for a few parts of the project and won't save any more than 1% of the time.
Additional benefit is maintainance, as Qt usually needs less code than MFC, GTK,... and is very easy to learn.
One more on Qt 50.000$ cost. It's nearly one additional developer for one year!
Qt is a pretty good tool. But as any tool, one has to know which tool to use when. Qt is _not_ the solution for every (GUI) problem.
who gives a [email protected]# !
My goodness, use what you want to use.
I for one can't wait for the release of the Ximian Open Office. QT or not, it promises to be damn good.
MSOffice format as default?? http://www.gnome.org/~michael/XimianOOo/img14.html
First .NET , now this. What next?
Somehow this convinces me that the ex-microsoft guys of gnome and ximian left M$ to perpetrate the divide and rule policy for M$.
Give it up! Like it or not, MS Word is the widely supported de-facto standard, and there's nothing you can do to change that. Work together with the ruler or be destroyed.
I do choose to be destroyed.
What? Of course MS Office Format is the standard.... _but_:
It is _a lot_ better to save your documents in OO's own format. From what my experience is I can say that once a document is a bit corrupted most of the work can be restored with OO's file format whereas this is seldom possible with MS format... funny thing though that OO does a better job in restoring corrupted documents than MS itself... MS file format is a lot more complicated with a hell lot more of cross referencing pointers inside the format than OO's format.
OO's file format is superiour to MS file format from a technical point of view.
Use MS file format where you have to, but don't rely on it for storing and backing up your work.
o You don't have to send MS files to make others read your documents (please use the de-facto standard Adobe pdf), plus you don't have to trust everybody to not change the content of your docs before forwarding your documents (maybe with your companys high-quality logo embedded) to somebody else.
o If you want to exchange editable documents where somebody else has to modify or copy-and-paste your work: use MS office format.
"""OO's file format is superiour to MS file format from a technical point of view."""
Where can I have more info on this? (XML-based, and open standard doesn't count sorry).
Oh, but XML and open-standard do count. XML = more easily repairable in case of corruption (important in an ever-more networked world), and open-standard means more easily convertible and more easily accessible by secondary tools.
MSOffice uses XML too. Don't mean nothing.
XML is an option.
MS's "support" for XML is only skin deep. They are just using it as a wrapper for their binary constructs.
I agree using OO's own format.
MS Office Format may be the standard, meaning most of the world is using it.
But the MS Office format isn't open, or is it? Using a format that is analysed / reversed engineered isn't that wise. Especially IMPORTING e.g. a MS Word file always looks different in OpenOffice / StarOffice Writer than it does in MS Word.
I don't agree that pdf is a good way to get the file not changed, it is only a bit harder to do. The advantage of pdf is the wide spread of readers and the hardware independence of the displayed content. But to protect the content aginst changes there is only the way to sign the document with cryptographic methods.
"We should join with Sauron. It would be wise my friend."
"...de-facto standard..." like "all" salesmen told you?
Use XML (even if M§ use "there version" only for the "enterprise" Office versions)!
Way to go M§.
If you really don't give a [email protected]# about things like this, I think you www time is better spent reading other sites. ;)
How on earth can you claim that 10% less 'lines of code' results in 10% less costs? I doubt that. If a programmer has to think for an hour to write a certain function in 100 lines of code, it's not very likely he will do it in 90 lines of code in 54 minutes. Probably the time needed is more or less the same and very dependent on the quality of the programmers. But then again who cares. KDE and Gnome should bash eachother less. There is no need for either of them to bash another product, both being brilliant...
It is difficult to summarise in a small article all the gain of Qt over Gtk. This is why George has taken conservative numbers like 30% less line codes means 10% faster. However, if you really want to dig into it, there is a huge difference of productivity between Gtk and Qt, whichi in my opinion, is closer to the 50% productivity boost than 10%.
You can check: [kuro5hin.org] for a remote idea. You can also have a look at cmp-toolkits.html .
The heart of the difference is that you can have a better, as more versatile, more reusable, architecture with Qt than with Gtk. With Gtk, you spend also a lot of your coding time in writing structs and type-unsafe MACROS because Gtk re-invents the OO programming in C. The fact that C++ is OO in the language saves a lot of time and catches a lot of mistakes at compile time.
You appear to be ignoring the existance of GTKmm, which produces similar looking code to Qt (but without a preprocessor and using the STL).
I think Michael Meeks was a bit off base with focusing on the costs, I think the issue of control is far more important here, but to claim that GTK is "less productive" than Qt because you can, if you wish, write more LOC in C, sounds extremely suspect. Like most decent toolkits today, GTK has bindings into all kinds of languages. There's no need to write in C, not even if you wish to create new widgets.
I am aware of gtkmm. I have even discussed with some people who program in Gtk and C++. You should wonder why the use the C binding and not the C++ one. They told me that gtkmm it is too complicated and that you have better support for the native C.
You don't need C to program in Gtk only from a short-sighted point of view :
- If you want to use gnome, you need C because most bindings don't bind gnome or are very late in doing it, and usually don't do it completely. So you need the C binding to take advantage of the interesting technologies.
- If you want people to join and contribute to your project, you need C too because most people don't program in exotic language. Would you code a feature for a project like unison which uses gtk and OCaml ? (by the way, it is a pity that they can't use gnome, it would make the project much more interesting and usable).
- If you want help and support from the community when you have a problem, it is better to use the native binding.
- The tutorial are in C, the books about Gtk are about C programming.
For all these reasons, you end up with 95% of the applications written for gnome/gtk in C.
While the emphasis may appear on the LOC, the problem of gtk is that it is a lot more complicated to do simple things.
For example, here is the code to declare a tictactoe widget that inherits a normal widget (I did not make it up, this comes from the gtk tutorial http://www.gtk.org/tutorial/app-codeexamples.html#AEN2923):
#ifndef __TICTACTOE_H__
#define __TICTACTOE_H__
#define TICTACTOE_TYPE (tictactoe_get_type ())
#define TICTACTOE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TICTACTOE_TYPE, Tictactoe))
#define TICTACTOE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TICTACTOE_TYPE, TictactoeClass))
#define IS_TICTACTOE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TICTACTOE_TYPE))
#define IS_TICTACTOE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((class), TICTACTOE_TYPE))
typedef struct _Tictactoe Tictactoe;
typedef struct _TictactoeClass TictactoeClass;
struct _Tictactoe
GtkTable table;
GtkWidget *buttons[3][3];
struct _TictactoeClass
GtkTableClass parent_class;
void (* tictactoe) (Tictactoe *ttt);
GType tictactoe_get_type (void);
GtkWidget* tictactoe_new (void);
void tictactoe_clear (Tictactoe *ttt);
#endif /* __TICTACTOE_H__ */
#include "tictactoe.h"
enum {
static void tictactoe_class_init (TictactoeClass *klass);
static void tictactoe_init (Tictactoe *ttt);
static void tictactoe_toggle (GtkWidget *widget, Tictactoe *ttt);
static guint tictactoe_signals[LAST_SIGNAL] = { 0 };
tictactoe_get_type (void)
static GType ttt_type = 0;
if (!ttt_type)
static const GTypeInfo ttt_info =
sizeof (TictactoeClass),
NULL, /* base_init */
NULL, /* base_finalize */
(GClassInitFunc) tictactoe_class_init,
NULL, /* class_finalize */
NULL, /* class_data */
sizeof (Tictactoe),
(GInstanceInitFunc) tictactoe_init,
ttt_type = g_type_register_static (GTK_TYPE_TABLE, "Tictactoe", &ttt_info, 0);
return ttt_type;
static void
tictactoe_class_init (TictactoeClass *klass)
tictactoe_signals[TICTACTOE_SIGNAL] = g_signal_new ("tictactoe",
G_TYPE_FROM_CLASS (klass),
G_STRUCT_OFFSET (TictactoeClass, tictactoe),
Here is the equivalent Qt code:
#ifndef __TICTACTOE_H__
#define __TICTACTOE_H__
class TicTacToe : public QWidget
TicTacToe( QWidget * parent = 0L );
void clear();
void tictactoe();
protected slots:
void toggled(bool);
QPushButton *buttons[3][3];
Honestly, which one is more complicated ? Where do you have more chances of making a mistake ? Remember that the Gtk version is macro-based, so a simple error may not be detected at all. For example, I have introduced an error in the code above which may create a strange compilation error one day. Have you noticed it ?
So the easy part is to day that in this example, the gtk example takes a lot more lines of code, but the rationale is that it is a lot more complicated. Hope you see my point now.
Hmm, so, you didn't actually _try_ GTKmm then, you just took some other peoples word for it that it's "too complicated" - in which case, why were they using it themselves?
I really think you should form your own judgements about this.
[ - If you want to use gnome, you need C because most bindings don't bind gnome or are very late in doing it, and usually don't do it completely. So you need the C binding to take advantage of the interesting technologies. ]
Not really. Almost everything 95% of apps use is bound to C++ at any rate, I think perhaps you can't define Bonobo objects in C++ yet (but very few apps do that anyway). Sure, some of the less popular bindings aren't complete, but that's not the case for the mm series.
[ - If you want people to join and contribute to your project, you need C too because most people don't program in exotic language. ]
C++ is hardly exotic, but OK, point taken. How does this not apply to KDE/Qt though, esp as Qt extends C++ and redefines a lot of stuff in the STL.
[ Would you code a feature for a project like unison which uses gtk and OCaml ? ]
Er, probably not, unless it was really cool. That's the tradeoff with using any language though, it's got nothing to do with the widget toolkit used.
[ - If you want help and support from the community when you have a problem, it is better to use the native binding. ]
That's rather subjective, perhaps it contains a grain of truth but all the major bindings for GTK have thriving communities and mailing lists.
[ - The tutorial are in C, the books about Gtk are about C programming. ]
That's about the only point that makes sense. But if you can read C++ you can read C, and reading C does not force you to write in it.
[ For example, here is the code to declare a tictactoe widget that inherits a normal widget (I did not make it up, this comes from the gtk tutorial http://www.gtk.org/tutorial/app-codeexamples.html#AEN2923): ]
Yes, I'm quite aware of GObject thanks. It is indeed rather ugly and verbose, but the reason it's used is to make it easier to create and use bindings! There's no way you can credibly claim that GTK is more complex unless you use the same language to compare, and actually *have* experience of both, as opposed to going on random stuff people have told you or first impressions from looking at the code. Take a look at this example (and it doesn't even use glade remember):
I think that is a pretty easy to understand article, especially considering:
a) My C++ skills are rudimentary at best
b) It doesn't use Glade (ie constructs the guis in code)
c) It uses one of the most complex things in GTK, namely the model/view based tree widget.
I have tried gtkmm recently, and it didn't work out. Nice interface, but when you need to debug something you're screwed when you have to wade through all the fugly gtk muck of C code that has to do all kinds of backflips to achieve what QT does more natively, and concisely.
The only good thing I got out of it was the nice sig/slot library, which is separated, thank goodness. Also if you want to do any serious work on the internals of GNOME you're pretty much stuck with their spaghetti maze of interdependant libraries and weak interfaces.
Another thing, is that the way problems are idiomatically solved in C and C++ are quite different these days. Someone who learned C++ first and now programs heavily with a functional/OO style can't necessarily just "read" (translation: follow just as well) C just because it's mostly a sub-language.
The OP was also making remarks about a QT and gtk comparison, and gtk != gtkmm, so there isn't any "ignoring" going on here. On the contrary, you just decided to butt in some snide, unrelated remarks.
And finally, the "thriving communities" of gtk bindings is mythic bullshit. I've got several non-C programs with strange bugs right now that magically appear and dissappear between releases.
To be perfectly honest, you sound like a well-indoctrinated GTK/GNOME fanboy. It would be nice if instead of regurgitating the line you're fed from others, you'd constrain yourself to things of your own knowledge and experience.
OK, so you tried GTKmm and didn't like it, that's fine by me, I don't have any problem with people using Qt in their apps. Some posters here appear(ed) to be unaware of its existance though.
I don't agree that gtk != gtkmm, GTK is a widget toolkit, bindings are just different ways of accessing the same thing. So saying, "GTK sucks because C is more verbose than C++" is like say, oh, I dunno, Qt sucks because C++ multiple inheritance is confusing (or whatever). C++ is just the means of accessing Qt, it doesn't seem very relevant.
By "thriving community" I meant there are active (busy) mailing lists for the major bindings, those being C++ and Python. Bugs happen, we all know that, I don't see how that's relevant to my comment on communities either.
[ To be perfectly honest, you sound like a well-indoctrinated GTK/GNOME fanboy. It would be nice if instead of regurgitating the line you're fed from others, you'd constrain yourself to things of your own knowledge and experience. ]
Well, I would if others did the same, the reason I am posting here tonight is because I clicked "Read more" and saw lots of fanboys repeating stuff they'd been told by others (presumably) or stuff that was just plain wrong about GTK/GNOME. I'm hardly a GNOME fanboy, there are parts of GNOME that suck and I'm happy to talk about them without getting rude about it. Defending GTK against inaccuracies and FUD doesn't make me a fanboy (or rather, shouldn't).
> Some posters here appear(ed) to be unaware of its existance though.
I doubt anyone here is unaware of gtkmm's existance.
> So saying, "GTK sucks because C is more verbose than C++" is like say, oh, I dunno, Qt sucks because C++ multiple inheritance is confusing (or whatever).
No, it's not. You have to *write* all those lines, and to write them correctly, and then to maintain them. Even though the general idea when it comes to languages is that "all languages are equal, use what you like", it is simply not true in practice. The more you have to write, the harder it is, period. It's purely a statistic game, more lines of code => more bug. There's no way around it. Perl and C are both two ways to access the kernel functions, would you agree that both are equal ? It doesn't make sense.
As for being a "fanboy", a google of name and a look at my homepage should be enough to prove you that I know what I'm talking about.
There's a reason why, in about 5 years of existence, only a handful of programs are based on gtkmm, and even some reverted from that to plain GTK+ or even Qt. It's not just because it's "in C++" that it's equal to Qt. I learned that the hard way :-).
You are _such_ a fanboy.
Note that Phillip never said anything about gtkmm yet you felt the need to jump in and pump it up without really knowing anything about it?! Why should anyone listen to you when you freely admit that you don't understand C++? Here is a different perspective from someone involved in actually creating gtkmm:
"... the bottom-line is still that programming for Gnome in anything else than C is far from immediate and requires a significant added effort."
Well, to be fair, here is the gtkmm equavilent:
#ifndef __TICTACTOE_H__
#define __TICTACTOE_H__
class TicTacToe : public Gtk::Widget
TicTacToe(Gtk::Widget *parent = 0L );
void clear();
SigC::Signal0 tictactoe() { return _tictactoe };
void toggled(bool);
SigC::Signal0 _tictactoe();
Gtk::Button *buttons[3][3];
I'm not sure if the above example is 100% correct (i don't even have any idea of what the original code does).
It's actually even less code than the Qt example, but the important part is that it is typesafe and it's genuine C++ (doesn't use a preprocessor like Qt). Gtk also uses modern C++ features (e.g. namespaces, STL) when appropriate.
Although gtkmm is much more up-to-date than it used to be, i do understand that many programmers would like to use a "pure" C++ toolkit, but overlooking gtkmm is a serious mistake when discussing gtk vs qt.
> but overlooking gtkmm is a serious mistake when discussing gtk vs qt.
This discussion is about commercial usage of gtk vs qt, and one thing that gtkmm lacks but that both gtk and qt have is: real usage, that is to say: both qt and gtk have been used successfully for large applications (open source or commercial).
gtkmm has not been used for large applications as far as I'm aware (if I'm mistaking feel free to correct me), and commercial developpers *hate* to be first movers because usually the first one gets to find the bugs, find that some parts miss documentation,etc..
So I'd say that for commercial development gtkmm is mostly irrelevent.
Galeon? Epiphany? Gabber?
And here is the equivalent PyGTK since, we're comparing apples and oranges anyway:
import gobject, gtk
class TicTacToe(gtk.Table):
__g_signals__ = {'toggled': (gobject.RUN_SIGNAL_FIRST,
gobject.TYPE_NONE, (gobject.TYPE_NONE))
buttons = []
def clear(self):
Without preprocessor, without a compiler, just time and run.
What? Are you sure? That looks horribly ugly. You should take a look at PyQt.
from qt import *
class TicTacToe (TicTacToeBase):
def __init__(self,parent):
def clear(self):
def toggled(self,isToggled):
No need to declare the signals, all methods are slots, the TTTBase class is made in designer and defines the buttons, so no need to declare them here.
Say you developed a brand new spanking widget in gtkmm by deriving from a well defined base class? How can any gtk+ user benefit from your efforts?
The answer is they can't. So you are forced to implement your widget in gtk+ and then wrap it in gtkmm to be able to use it afterwards if you want others to benefit from your efforts. This is one point always overlooked by application development with toolkits such as Qt or gtk+. For others to be able to use your components the base development has to be done in the main implementation language which is C++ for Qt and C for gtk+.
The first is only a problem if you are into holy wars whereas the latter enforces doing things the hard way. If there were no C++ (or other OO-Language) then the approach to doing OO in C by hand wouldn't be as much frowned upon. When C++ wasn't up to the task (as it was about 6-8 years ago) there even was a soon-to-be-replacing-motif (back then motif still was the rage) development (Fresco) that used C++ and failed because there weren't any decent compilers that could handle it's compilation.
But I believe in the "choose the best tool for the job at hand"-rule and being a C programmer for more than 16 years I still decided that GUI programs are best written in OO fashion and learned C++ (after doing GUI design in C on windows for about 3 years and hating it). In our company we have two commercial licenses of Qt since three years and my own development speed has more than doubled compared to the bare bones (API and MFC) Windows-development and quadrupled when compared to previous X application development (where I used Xt and tried XView).
> For others to be able to use your components the base development has to be done in the main implementation language which is C++ for Qt and C for gtk+.
Which is what Microsoft has tried to fix with .NET.
But only by prescribing that all languages have to use the same kind of interface at the lowest level - even if this means that the language can't be used to it's full extent or the implementation has to go through loops and hoops to be compatible. It all comes at a price. And the price for this is the lockin into the Windows platform which I am not willing to pay.
As far as the argument between Qt andt gtk+ is concerned: as long as you are willing to pay the price (here using the main implementation language of C++/C respectively) then the corresponding toolkit is ok. But even with my decade long experiences - or just because of these - with C I wouldn't pay the price to use gtk+.
No. .NET is not about being able to program is whatever language you like, this is totally wrong. It's about being able to reuse legacy code without too much trouble. If you start developing in .NET, you will do it in C#, period.
Actually, AFAIK you can use KParts written in Java (w/Qt bindings) just fine. Gideon/KDevelop even ship with a few, IIRC. Yeah, it needs some bolierplate factory code in C++, but it is still possible. IIRC, this works since in order to embed a component, you don't actually need access to all of its functionality, and just the functionality for the base class, and the basic KParts interfaces. Of course, the things one can do are somewhat limited to basically just feeding data to the widget for editting or display or such, but there are plenty of uses for that...
But you are stuck, if you'd want to extend the widget by deriving from it and changing the behaviour of it. As nice as the whole embedding is (and it's unusable if you want to be portable between platforms such as Linux, Mac and Windows) you still have to resort to the implementation language of the widget to enhance it to do whatever you need it to do if it doesn't fully meet your requirements.
As nice as both bonoboo and kparts may be to make the components interoperable, if you want to use the foundations provided by the toolkits to build something new - such as a whole application - you are best off using the primary implementation language for at least the generic widgets that might be of use to others when extended. Component models are really something to get bigger applications work together.
Language bindings though - however nice and complete they may be - are a cludge when compared to the real thing because you detach yourself from the main implementation and other people are barred from using your enhanced components by enhancing them themselves.
Not only I have to agree: In his book "The C++ programming language" Stroustrup showed the problems when using programming paradigm which weren't those of the programming language. IMHO its a good proof that OO is the best known paradigm for GUI-related stuff when GNOME tries to implement OO paradigm in a procedural language. There are cases where a procedural paradigm fits better (which Stroustroup pointed out too), but for big, long-life projects its nice to have the abstraction layer of objects - at least object-based programming, and for easy-to-understand-designs generalization is a great help too. The big advantage of C++ is that it provides the C subset for the lowest layers of a design, resulting in a best-fit approach (OO for the upper levels, dirty C for the lowest levels).
That's in short
Come on, you are talking only for initial development cost. What about the maintenance cost and bugfixes?! Also don't forget about that QT vs GTK, QT has very good OO advantage - which means that developer is strongly encouraged to reuse code!
In a big project bugfixes, later upgrades, maintenance, etc. strongly depends of amount and quality of the code, which on the other hand strongly depends of the quality of OO framework of your choice. I will not say anything more because one can guess, but QT is definite winner when talking about of efficient coding.
Think about it.
I know I will get flamed for my opinion regardless for what I write rather than who I am but:
> the case for GNOME as the only viable desktop on Unix
I gonna belive this the day GNOME gets tools like those listed here:
Why listening tools ? Well simple because if you compare the cost of development and development time then I better use a OO based foundation and know that I can develop apps with some lines of code rather than using a foundation written with C where I permanently stick into trouble and reinvent the wheels e.g. different Dialogs, Different Toolbars, Different Menu's, Different way of storing thumbnails etc. To solve all the existing issues in GNOME now will take them 3-4 times longer than using Objects which are programmed already and have them embedded into their own applications. I would say, let's wait another 2 years and compare back. While GNOME is still solving their heavy issues and talk what to adapt next KDE has stepped yet another way further into the right direction. All the applications are there (List above) they only need to get polished and enchanced but so far for business and real corporate this looks good.
> And, of course, the ABI/API stability Michael claims for GNOME
Such as multiple Toolbars and that herodic FileSelector ? GNOME has 5 Different really stable Toolbars and a stable FileSelector that hasn't changed since day 1.
I know my reply heatens this situation once again a tad more but I programmed long enough using GNOME libraries to know what I write about. Specially the rapid development of GNOME applications is worth to mention. Yes people really like to use the STABLE API/ABI of GNOME specially all the undocumented parts of the libraries and functions. I always celebrate the non-existing documentations for programmers.
What are you smoking? kdevelop counterpart is anjuta (in cvs I think, but gideon is not out yet either), quanta has bluefish, and I'm sure many others have counterparts (ie, I don't want to waste time searching).
I'm smoking 'the facts of reality'. Anjuta1 == GNOME 1. Anjuts2 == GNOME 2 but far from being usable, far from being a valid competitor to KDevelop. And comparing Quanta with BlueFish is simply laughable.
Nobody cares.
You seem to care a lot otherwise you wouldn't have replied :)
> And comparing Quanta with BlueFish is simply laughable.
I'm pretty sure you're smoking something now too. Both tools have a good feature set. I suspect though that you are suggesting Quanta is laughable as you're obviously trolling. I can tell you Quanta is a lot more popular. I can also tell you haven't looked at it for some time. As I am a gentleman I won't laugh at Bluefish for not being DTD driven with XML configuration files. Code folding? I won't laugh because we have a WYSIWYG part in CVS, have dropped below 4 reported bugs in KDE Bugzilla and off the KDE top 100 bugs list, have a number of new features... Quanta is integrating Kommander, a visual dialog editor for custom text manipulation and script control with our user programmable actions... Our full document parsers are incredibly fast...
It would be rude to laugh at another software project just because they were falling behind in these areas... Especially when they were in existance when Quanta was started and when most of the original development team left Quanta was largely undeveloped for a year. Hmmm?
Quanta takes a back seat to no web tool. Had we focused more on bells and whistles than our architecture prepping for being totally incomperable we could have been like other tools... but right now there is no tool open or closed source that is stacking up to Quanta's 3.2 feature set. That doesn't mean I will laugh at Dreamweaver either.
BTW your credibility here is pretty much zero with such ignorant statements.


text:
Available for custom work
- Product Details
- Our custom process
Ultra-skinny Princessa™ solitaire featuring a gorgeous True Antique™ cushion diamond in eagle-claw prongs on a cathedral shank. Paired with 101™ pave wedding band.
- True Antique™ cushion diamond - 2 carats
- Double-claw prongs
- Cathedral shank
- Hand-forged platinum
Advantages of working with us
Integrity and social responsibility are at the core of our sourcing practices. We cut and ethically source stones directly from cutters worldwide.
- Designer's direction - Do not overlook the importance of the ring's artistry while searching for a center stone. We care about the finished look of the piece as much as we care about getting you the lowest price on a stone. Getting a design-appropriate stone will result in a better-looking piece and, ultimately, a better return on your investment.
- Wholesale pricing - If you found a stone elsewhere, most likely, we can get that exact stone at the same or even lower price. Regardless of where you found it, we know the stone's real owner and will be able to source it without intermediaries or brokers.
- Exclusivity - Our long-lasting partnerships with elite diamond houses give us special access to stones not listed anywhere.
- We work with any budget - Don't get intimidated by the size of the stones we display. We do plenty of work with stones of any size or value, including lab-grown diamonds.
- Award-winning style - We create new, original designs for domestic and international clients every day. Leon Mege is a master jeweler who presents the best possibilities and suggests innovative custom options - the best fit for your unique design.
- Flexibility - We can modify or change any design aspect to make it uniquely yours. Our craftsmanship is superior to luxury brands such as Harry Winston, Graff, and others because we produce only one piece of jewelry at a time.
How the custom process works
We produce exclusive top-quality jewelry that is guaranteed to meet the highest standards of beauty and precision. Custom work starts with selecting an appropriate center stone, then designing the piece in close consultation with the client.
- We start with a phone consultation and a preliminary price quote.
- We strongly urge you to consider one of our past designs as a starting point for a piece that will be uniquely yours.
- To begin selecting and presenting the best stone options, we require a small retainer that allows us to put in the necessary legwork.
- Once the center stone is selected, we finalize the design and send a detailer PO for your approval.
- The production begins after the PO is signed and the deposit is received.
- Most custom work takes four to eight weeks, during which the stone is fully insured.
- We are proud that most of our clients are referrals.
Payment & delivery
- Custom work requires a deposit. In most cases, it is 50% of the total.
- Pay with check, wire transfer, or direct deposit.
- Credit cards are accepted for retainers or stock purchases only.
- The balance must be fully paid before we ship.
- There is no sales tax outside of New York.
- Shipping is free within Continental US.
- The ring comes in a signature leather box with all the necessary paperwork, including certificates and appraisal.
How to stretch your budget
We can re-create this style to fit a specific budget using a smaller stone or a lab-grown diamond. You can dial the price up or down dramatically by selecting various color and clarity grades.
Do not borrow money to buy jewelry, including an engagement ring. Instead, consider using the following:
- a smaller stone
- lower color or clarity diamond
- fancy shape diamond instead of a round
- a lab-grown diamond
- fewer accent stones and pave

subset: commoncrawl


text:
May 21, 2024 @ 7:00 pm - 9:00 pm
|Recurring Event (See all)
An event every week that begins at 7:00 pm on Tuesday and Thursday, repeating indefinitely
Meet up with fellow Pasadena Pacers for your midweek runs! Distance and speed varies but on average it's a loop around the Rose Bowl. The meeting location is in the same general vicinity as the Saturday morning runs…slightly south of the Rose Bowl Aquatic Center (360 N. Arroyo Blvd., Pasadena, 91103) near the picnic tables on the south end of Parking Lot I.


text:
Here's the NYT editorial, which is entitled "The N.R.A. Crawls From Its Hidey Hole."
[W]e were stunned by Mr. LaPierre's mendacious, delusional, almost deranged rant.He proposed a mob? This is a failure (or pretended failure) of imagination. What if those who worked in schools were offered training in weapons and permission to carry in schools if they could qualify — entirely optional? Is that idea obviously mendacious, delusional, and almost deranged? The NYT is hot to exclude it as something any sane person would even begin to contemplate. They'd like an instant crazy image of teachers gone wild.
Mr. LaPierre looked wild-eyed at times....
We cannot imagine trying to turn the principals and teachers who care for our children every day into an armed mob....
People like Mr. LaPierre want us to believe that civilians can be trained to use lethal force with cold precision in moments of fear and crisis. That requires a willful ignorance about the facts.If "civilians" can't be trained, how can noncivilians be trained? And quite aside from how well people hit targets, isn't the presence of an armed guard a deterrent from beginning an attack, and doesn't pointing a gun at the criminal sometimes end his attack?
Moving on from the NYT, here's Andrew Sullivan absorbing LaPierre into an all-out assault on the GOP titled "Enough!":
Between the humiliating and chaotic collapse of Speaker Boehner's already ludicrously extreme Plan B and Wayne La Pierre's deranged proposal to put government agents in schools with guns, the Republican slide into total epistemic closure and political marginalization has now become a free-fall. This party, not to mince words, is unfit for government.If that kind of hysteria — sounding deranged in the condemnation of derangement — is what counts as unminced words these days, I'd like to put in an order for minced words. I'd like to aim a precise scoff at the phrase "government agents in schools." Agents! Sounds very scary, but the truth is, teachers are government agents.
Anyway, Sullivan's style of hysterical talk wins The Game of Internet, where the score is kept in traffic statistics. And Sullivan himself is boasting that his "Enough!" post "has just blown up on Facebook." Kablooey! He's so sensitive about those terrible guns, but his metaphor of choice is explosion.


text:
Advanced Search |
Search Tips
Sour Crème Cake Donuts. Big seller!
We promise to never spam you, and just use your email address to identify you as a valid customer.
This product hasn't received any reviews yet. Be the first to review this product!
All prices are in USD
Copyright 2023 Bill's Donut Shop.
Sitemap |
Small Business Websites by Henry Clarke
| Privacy Policy


text:
- Description
- Shipping / Returns
- About Us
Show your pride in a pair of these colorful men or women's high & low top canvas shoes in black or white trim featuring the national flag colors of Canada from our exclusive Shoes of the World collection.
These canvas shoes feature double-sided printing with round-toe construction and soft textile lining for lightweight maximum comfort.
Sporting the classic look of metal eyelets for a snug lace-up fit, these shoes also utilize a high-quality EVA outsole for traction and exceptional durability.
All of our classic canvas high and low top shoes are custom-made-to-order and handcrafted to the highest quality standards.
- Cannot be purchased in stores! Online Exclusive ONLY!
- Click the "ADD TO CART" button now!
- Limited Quality - Will sell out fast!
WORLDWIDE EXPRESS DELIVERY!! 10 to 14 DAYS! *
Please allow 3 to 7 business days to receive a tracking number while your canvas shoes are hand-crafted, packaged, and shipped from our facility.
The estimated worldwide shipping time for these canvas shoes is 10 to 14 business days. Be sure to check our "Where We Ship" page to see the shipping details of your country.
- EXPRESS Delivery with FEDEX / DHL delivery service.
- Only $9.95 USD shipping charge for EXPRESS DELIVERY!
- Tracking Number will be provided after shipment.
>> Save MONEY using STANDARD DELIVERY! Click HERE! <<
- Full canvas double sided print with rounded toe construction.
- Lace-up closure for a snug fit.
- Metal eyelet for a classic look.
- Soft textile lining with lightweight construction for maximum comfort.
- High-quality EVA outsole for traction and exceptional durability.
Our canvas shoes are a "flat" shoe, and may run narrower than a traditional tennis shoe. For this reason, we suggest ordering a shoe that is one or one-half size bigger than a tennis shoe you may normally wear.
>> See More on SIZING CHART PAGE <<
Please allow 10 to 14 business days for WORLDWIDE SHIPPING! *
AFFORDABLE SHIPPING available on this item.
All Type Supply is committed to customer satisfaction, that is why we offer a 30 day return policy on your order starting from the date of delivery of your order to your door. That means your 30 day return window doesn't start until you receive your package.
And don't worry, if you have received your order and there is a problem with SIZING or if the items do not fit... NO PROBLEM! We will make the exchange and be sure you get the correct size.
The amount of time it takes for your product to ship after you place your order will vary between products. Most of the products offered on our site are exclusive only to AllTypeSupply.com. We accomplish this by custom creating many of our products as soon your place your order.
The normal production time is between 2 to 4 days for things such as pillow slips to canvas bags, 5 to 9 days for higher ticket items such as leather boots and canvas art and approximately 2 weeks for bedding sets. Once your product is created, then the product will be shipped.
The estimated shipping time for a specific product can be found on that product's product page. The delivery times on the website for each product are an estimated delivery time based on the past delivery times of each product. All of the delivery times are an estimate of how long the order will take to arrive if you live in the United States, unless otherwise noted by a "Worldwide Delivery" estimate. If you live outside the United States, the delivery times may be longer than stated.
Delivery times may be longer due to certain, seasonal shopping times of the year, and due to the popularity of certain items in our catalog, shipping times may take longer than the estimate.
You can track the status of your order by using the Order Lookup page.
You may view AllTypeSupply.com's stated Return / Refund Policy here.
Our store's return policy is 30 days from the date of delivery which is confirmed through your tracking number. Your 30 day return window does not start until you receive your package.
To return an item, you must first contact us at firstname.lastname@example.com and inform us of your reason for the return; i.e., damanged, wrong color, incorrect item, wrong size, etc.
We will then give you the correct return address for you to send the item. DO NOT send the return back to the return address that was on the original shipping package. You will be given a new return address.
You will need to return the item through USPS with a tracking number. Regular First-Class mail will work for this. The customer will pay for the return shipping.
To be eligible for a return or exchange, your item must be unused and in the same condition that you received it. It must also be in the original packaging.
Once the item is received by AllTypeSupply.com and the condition is inspected, then the refund or exchange will be processed.
* We will issue a refund / cancellation of an order within the first 24 hours after the order is placed. After 24 hours, your product has gone into production and we will not process any refunds until after you receive your package and follow the outlined return procedure.
*** Any "Free Plus Shipping Items", "99¢ Plus Shipping", or items purchased through our "$5 FLASH SALE" promotion on our site do not qualify for refunds, unless received damaged or broken and proof with an image is sent to our customer support and verified. ***
All Type Supply will print all types of art on whatever we can find! It can be pillows, bedding sets, phone cases, T-Shirts, mugs, bags, shoes, shower curtains... if it can be printed on, we will find a way to do it!
Located in Fort Worth, Texas, the products offered at All Type Supply are sold exclusively through our website and can't be found in stores.
We have partnered with some unique and amazing artists who each have their own style and artistic vision.
Unique art accompanied with some of the best print-on-demand suppliers from around the world, we strive to always bring you an amazing and one of a kind product to give you that extra special piece to accent and express yourself.
Please contact us with any questions.


text:
The risks of defining ourselves by templates
You Are Not a Gadget Review: A Manifesto. By Jaron Lanier. Knopf, 209 pp., $24.95.
By Janice Harayda
Is the flowering of the Internet is turning us into a nation of container plants? Virtual-reality pioneer Jaron Lanier thinks so. In this polemic, he argues that we believe we're expressing our uniqueness when we launch blogs, join Facebook, or leave comments on websites.
But too often, we're pruning our personalities to fit programming decisions made decades ago and the software designed around them. And the cost is steep for people who give away much of their best work online – all those "journalists, musicians, artists, and filmmakers who are staring into career oblivion because of our failed digital idealism."
Lanier at times wanders into abstruse topics such as the difference between Bachelardian and Goldingesque neotony or seems to be auditioning for a spot on Oprah's couch next to Eckhart Tolle. But he salts You Are Not a Gadget with enough life-giving anecdotes to find an appealing middle ground between writing for science-fair winners and for owners of PCs for Dummies. Yes, he tells us, it's true: Computers scientists really have figured out "how to hack into a pacemaker and turn it off by remote control" in order to kill someone.
Best line: "The phase of life we call 'childhood' was greatly expanded in connection with the rise of literacy, because it takes time to learn to read." "Am I accusing all those hundreds of millions of users of social networking sites of reducing themselves in order to be able to use the services? Well, yes, I am."
Worst line: "Consciousness is attempting to will itself out of existence."
Published: January 2010
You can also follow Janice Harayda (@janiceharayda) on Twitter. She satirizes American literary culture, such as it is, on her FakeBookNews page on Twitter, www.twitter.com/FakeBookNews. bit.ly/DKTolle
© Janice Harayda. All rights reserved.


text:
Palliative Care
Palliative care is a specialized caregiving approach that supports individuals living with a chronic illness. Our compassionate caregivers help individuals with chronic conditions remain at home by creating calming and supportive environments.
Our care team focuses on an individual's physical comfort as well as their emotional, social, and spiritual well-being.
What Is Palliative Care at Home?
Our specialized services provide supportive care so that your loved ones can remain in the place they cherish - home.
There are key differences between hospice care and palliative care. Hospice care is provided to individuals with limited life expectancy while palliative care can be provided regardless of a person's life expectancy.
In addition to our home care services, we also offer a dedicated program for end of life care.
Our Palliative Care Services
Through our unique Palliative Care Certification Program, we offer care with a focus on the following four areas:
- Physical Needs
We focus on your loved one's physical needs and personal comfort.
- Emotional Needs
We identify what is important to our clients and make their lives the best they can be through maintaining their favorite routines and activities..
- Social Needs
We develop close relationships with clients and their families. We provide companionship and conversation to relieve feelings of loneliness and isolation.
- Spiritual Needs
We strive to restore hope for your loved one and your family by helping you find peace of mind in a challenging time.
Ready to get started?
Find your nearest Visiting Angels' home care agency today or CONTACT US to learn more about our services!
Palliative Home Care FAQs
How is Palliative Care Delivered in Home Care?
Our Visiting Angels' caregivers are offered non-medical certification in palliative care. Their primary focus is to deliver comfort care and compassion that addresses the physical, emotional, and spiritual needs of our clients with the overall goal to impact quality of life.
What Is the Difference Between Palliative Care and Hospice Care?
The primary difference is the life expectancy of the individual. Hospice care is available to those with a life expectancy of six months or less. Palliative care is available to individuals regardless of life expectancy.
How Long Can an Individual Use Palliative Care?
There is no limitation period an individual can receive this specialized care service unless indicated from a payer source.
How Can You Learn More About Palliative In-Home Care Services?
If you have a loved one who is living with a chronic condition, we invite you to contact your local Visiting Angels home care office to learn more about our compassionate approach to home care. Before getting started, Visiting Angels will provide your family with a free home care consultation that helps us to learn more about your loved one's needs. With input from you and your loved one, we will develop a personalize plan.
Serving Southern Indiana which includes Floyd County, Harrison County and Clark County
Visiting Angels NEW ALBANY, IN153 E Main St #A
New Albany, IN 47150
Phone: 812-670-5959
Fax: 812-670-5958


text:
971 Butternut Dr., Holland, MI 49424, (616) 399-3600
Call: (616) 399-3600
It is our goal to keep your mouth healthy, your teeth fully functional, and your smile bright — and we are proud of all the services we offer to do exactly that. At the same time, we want you to understand all that modern dentistry in general has to offer you. To that end, we have assembled a first-rate dental library in which you can find a wealth of information on various dental topics, including:
From a thorough professional cleaning to a full smile makeover, there is an amazing array of services that cosmetic and general dentists offer to make sure your teeth stay healthy, function well and look great. If your smile is not all you want it to be, this is the place to start. Read more about Cosmetic & General Dentistry.
When you have a dental emergency — whether it's caused by a sudden accident or chronic disease — your teeth and/or the tissues of the mouth that surround them need to receive proper care right away. It's also important to be aware, before you're actually in the situation, of what you can do to ensure the best outcome. Read more about Emergency Dental Care.
This is the branch of dentistry that focuses on the inside of the tooth — specifically the root canals and sensitive, inner pulp (nerve) tissue. When this tissue becomes inflamed or infected, a root canal procedure may become necessary. But contrary to the popular myth, a root canal doesn't cause pain, it relives it. Read more about Endodontics.
If you are missing one or more teeth, dental implants offer the comfort and security of a permanent replacement that looks and functions just like your natural teeth. Dental implants also help preserve the tooth-supporting bone in your jaw that naturally deteriorates when even one tooth is lost. Read more about Implant Dentistry.
Oral health is an essential component of general health and well-being. Good oral health means a mouth that's free of disease; a bite that functions well enough for you to eat without pain and get ample nutrition; and a smile that lets you express your happiest emotions with confidence. Read more about Oral Health.
A major goal of modern dentistry is to help you keep your teeth and gums healthy for a lifetime. By following a conscientious program of oral hygiene at home, and coming to the dental office for routine cleanings and exams, you have the best chance of making this goal a reality. Read more about Oral Hygiene.
The word "surgery" often brings to mind a stay in the hospital, general anesthesia, and perhaps a lengthy recovery period. However, the experience of having oral surgery is usually very different from that. Some common oral surgery procedures include: tooth extractions, dental implant placement, and biopsies of suspicious oral lesions. Read more about Oral Surgery.
Adults and kids alike can benefit from the boost in self-confidence that comes from having a great-looking smile with beautifully aligned teeth. Orthodontic treatment can even improve chewing, speaking and oral hygiene in certain cases. And with today's virtually invisible orthodontic appliances, it's possible to keep your treatment a private matter… until your new smile is unveiled, of course! Read more about Orthodontics.
It's never too early to get your child started on the path toward a lifetime of good oral health, and there are many services to do exactly that. Monitoring your child's dental growth and development, and preventing and intercepting dental diseases along the way, is the primary focus of pediatric dentistry. Read more about Pediatric Dentistry.
If you want to keep your teeth for life — a completely reasonable goal in this day and age — you need to make sure the tissues that surround them are also healthy. Should gum problems arise, you may need periodontal therapy to restore diseased tissues to health. Read more about Periodontal Therapy.
In the field of dentistry, new technology is constantly changing the way diseases are diagnosed, routine procedures are performed, and illnesses are prevented. Although they may seem unfamiliar at first, new and improved dental technologies offer plenty of real benefits for patients. Read more about Technology.
Firmly anchored in your jaw and protected by an outer coating of tough enamel, your teeth are remarkably strong — yet it's still possible for them to chip, crack, or even break. In fact, there is some evidence that today, our teeth are developing cracks at a record rate. This may be due to the fact that people are living longer (giving teeth more time to accumulate damage), or that our stress levels are increasing (which may cause teeth clenching and grinding).
Biting on hard objects, receiving a blow to the mouth, or having large cavities (or old amalgam fillings) that weaken the tooth's structure are also common causes of tooth fractures. But no matter of the cause, there are a number of symptoms that indicate a tooth may be cracked, and several treatments we can offer, depending on the severity of the injury.
Small chips on the edges or cusps of teeth often cause no symptoms, and can be treated by cosmetic bonding or other methods. Deeply fractured teeth, on the other hand, may be a serious problem. The sooner they are treated, the more likely it is that the affected tooth can be saved. Let's take a look closer look at the types of fractures teeth can develop, and the symptoms they may produce.
Minor Cracks (craze lines)
These tiny fissures in the outer enamel of the tooth often cause few or no symptoms; in fact, most don't require treatment. If you are having tooth pain, however, these cracks will need to be evaluated and possibly treated. That's because without a careful examination, there is no way to know for sure whether these cracks go into only the enamel, or if they penetrate into the dentin (inner body) of the tooth. While the tiniest craze lines don't show up on X-rays, they can often be detected by feel (using a small instrument called an explorer), by having you close down on a "bite stick," or by using special dye stains or high-magnification instruments.
Vertical Cracks
This type of crack often starts at the chewing surface and extends toward the roots — but may it also begin in the root and continue toward the crown. Either way, it doesn't completely separate the tooth into two parts. Depending on the extent of the fracture, you may feel only minor discomfort that occurs in response to temperature changes (with hot or cold beverages, for example); or, it may produce sharp pain when you chew. In any case, you shouldn't ignore the symptoms, because cracked teeth require dental treatment quickly to keep them from progressing further. If the cracks continue to progress, tooth extraction may become necessary.
Deep Fractures or Split Teeth
When serious fractures occur, you'll know it: The distinct parts of the tooth can be separated from each other, and tooth's pulp is often inflamed and painful. This condition requires immediate treatment, and it's rarely possible to save the affected tooth.
Treatment for Cracked Teeth
What treatment is best for a cracked tooth depends on the extent and the severity of the damage. If a small crack is detected early enough, it's often possible to seal the fissure with restorative materials. For larger cracks that involve the pulp of the tooth, root canal treatment is generally required. Afterward, the visible structure of the tooth may be restored with a crown or "cap." Sometimes, additional procedures may be recommended to try and save the tooth. In the most severe cases, however, the tooth will need to be extracted.
The preferred treatment for cracked teeth is — you guessed it — prevention! Wearing proper protective equipment (including a custom-fitted mouthguard) when playing sports, and staying alert to dangerous situations (like distracted or impaired driving) can help keep you safe. So can regular dental checkups, where your teeth are examined carefully for early signs of a problem. However, if you experience any symptoms that could indicate a cracked tooth, don't wait: The sooner it's treated, the better the chance that we can save it.
Cracked Tooth Syndrome Teeth are fracturing today in record numbers. Causes include longer life spans (older, brittle teeth tend to crack more) and higher stress levels, which may lead to increased teeth clenching and grinding. The earlier a crack is detected and the more superficial it is, the simpler it will be to repair it... Read Article
Trauma & Nerve Damage to Teeth Answers to treatment of specific dental injuries — not only do injuries and their treatment vary, but they are also influenced by the type of tooth, whether baby or adult teeth, and their stage of growth and development. From chipped to fractured teeth, modern dentistry's answers are here and now... Read Article


text:
A newer version of this documentation is available. Use the version menu above to view the most up-to-date release of the Greenplum 6.x documentation.
Runs a load job as defined in a YAML formatted control file.
gpload -f control_file [-l log_file] [-h hostname] [-p port] [-U username] [-d database] [-W] [--gpfdist_timeout seconds] [--no_auto_trans] [--max_retries retry_times] [[-v | -V] [-q]] [-D] gpload -? gpload --version
The client machine where gpload is executed must have the following:
- The gpfdist parallel file distribution program installed and in your $PATH. This program is located in $GPHOME/bin of your Greenplum Database server installation.
- Network access to and from all hosts in your Greenplum Database array (master and segments).
- Network access to and from the hosts where the data to be loaded resides (ETL servers).
The operation, including any SQL commands specified in the SQL collection of the YAML control file (see Control File Format), are performed as a single transaction to prevent inconsistent data when performing multiple, simultaneous load operations on a target table.
- -f control_file
- Required. A YAML file that contains the load specification details. See Control File Format.
- --gpfdist_timeout seconds
- Sets the timeout for the gpfdist parallel file distribution program to send a response. Enter a value from 0 to 30 seconds (entering "0" to disables timeouts). Note that you might need to increase this value when operating on high-traffic networks.
- -l log_file
- Specifies where to write the log file. Defaults to ~/gpAdminLogs/gpload_YYYYMMDD. For more information about the log file, see Log File Format.
- --no_auto_trans
- Specify --no_auto_trans to disable processing the load operation as a single transaction if you are performing a single load operation on the target table.
- By default, gpload processes each load operation as a single transaction to prevent inconsistent data when performing multiple, simultaneous operations on a target table.
- -q (no screen output)
- Run in quiet mode. Command output is not displayed on the screen, but is still written to the log file.
- -D (debug mode)
- Check for error conditions, but do not execute the load.
- -v (verbose mode)
- Show verbose output of the load steps as they are executed.
- -V (very verbose mode)
- Shows very verbose output.
- -? (show help)
- Show help, then exit.
- --version
- Show the version of this utility, then exit.
- -d database
- The database to load into. If not specified, reads from the load control file, the environment variable $PGDATABASE or defaults to the current system user name.
- -h hostname
- Specifies the host name of the machine on which the Greenplum Database master database server is running. If not specified, reads from the load control file, the environment variable $PGHOST or defaults to localhost.
- -p port
- Specifies the TCP port on which the Greenplum Database master database server is listening for connections. If not specified, reads from the load control file, the environment variable $PGPORT or defaults to 5432.
- --max_retries retry_times
Specifies the maximum number of times gpload attempts to connect to Greenplum Database after a connection timeout. The default value is 0, do not attempt to connect after a connection timeout. A negative integer, such as -1, specifies an unlimited number of attempts.
- -U username
- The database role name to connect as. If not specified, reads from the load control file, the environment variable $PGUSER or defaults to the current system user name.
- -W (force password prompt)
- Force a password prompt. If not specified, reads the password from the environment variable $PGPASSWORD or from a password file specified by $PGPASSFILE or in ~/.pgpass. If these are not set, then gpload will prompt for a password even if -W is not supplied.
Control File Format
The gpload control file uses the YAML 1.1 document format and then implements its own schema for defining the various steps of a Greenplum Database load operation. The control file must be a valid YAML document.
The gpload program processes the control file document in order and uses indentation (spaces) to determine the document hierarchy and the relationships of the sections to one another. The use of white space is significant. White space should not be used simply for formatting purposes, and tabs should not be used at all.
The basic structure of a load control file is:
--- VERSION: 220.127.116.11 DATABASE: db_name USER: db_username HOST: master_hostname PORT: master_port GPLOAD: INPUT: - SOURCE: LOCAL_HOSTNAME: - hostname_or_ip PORT: http_port | PORT_RANGE: [start_port_range, end_port_range] FILE: - /path/to/input_file SSL: true | false CERTIFICATES_PATH: /path/to/certificates - FULLY_QUALIFIED_DOMAIN_NAME: true | false - COLUMNS: - field_name: data_type - TRANSFORM: 'transformation' - TRANSFORM_CONFIG: 'configuration-file-path' - MAX_LINE_LENGTH: integer - FORMAT: text | csv - DELIMITER: 'delimiter_character' - ESCAPE: 'escape_character' | 'OFF' - NULL_AS: 'null_string' - FORCE_NOT_NULL: true | false - QUOTE: 'csv_quote_character' - HEADER: true | false - ENCODING: database_encoding - ERROR_LIMIT: integer - LOG_ERRORS: true | false EXTERNAL: - SCHEMA: schema | '%' OUTPUT: - TABLE: schema.table_name - MODE: insert | update | merge - MATCH_COLUMNS: - target_column_name - UPDATE_COLUMNS: - target_column_name - UPDATE_CONDITION: 'boolean_condition' - MAPPING: target_column_name: source_column_name | 'expression' PRELOAD: - TRUNCATE: true | false - REUSE_TABLES: true | false - STAGING_TABLE: external_table_name - FAST_MATCH: true | false SQL: - BEFORE: "sql_command" - AFTER: "sql_command"
- Optional. The version of the gpload control file schema. The current version is 184.108.40.206.
- Optional. Specifies which database in the Greenplum Database system to connect to. If not specified, defaults to $PGDATABASE if set or the current system user name. You can also specify the database on the command line using the -d option.
- Optional. Specifies which database role to use to connect. If not specified, defaults to the current user or $PGUSER if set. You can also specify the database role on the command line using the -U option.
- If the user running gpload is not a Greenplum Database superuser, then the appropriate rights must be granted to the user for the load to be processed. See the Greenplum Database Reference Guide for more information.
- Optional. Specifies Greenplum Database master host name. If not specified, defaults to localhost or $PGHOST if set. You can also specify the master host name on the command line using the -h option.
- Optional. Specifies Greenplum Database master port. If not specified, defaults to 5432 or $PGPORT if set. You can also specify the master port on the command line using the -p option.
- Required. Begins the load specification section. A GPLOAD
specification must have an INPUT and an
OUTPUT section defined.
- Required. Defines the location and the format of the input data
to be loaded. gpload will start one or more
instances of the gpfdist file distribution
program on the current host and create the required external
table definition(s) in Greenplum Database that point to the
source data. Note that the host from which you run
gpload must be accessible over the network
by all Greenplum Database hosts (master and segments).
- Required. The SOURCE block of an
INPUT specification defines the
location of a source file. An INPUT
section can have more than one
SOURCE block defined. Each
SOURCE block defined corresponds
to one instance of the gpfdist file distribution program
that will be started on the local machine. Each
SOURCE block defined must have a
FILE specification.
For more information about using the gpfdist parallel file server and single and multiple gpfdist instances, see "Loading and Unloading Data" in the Greenplum Database Administrator Guide.
- Optional. Specifies the host name or IP address of the local machine on which gpload is running. If this machine is configured with multiple network interface cards (NICs), you can specify the host name or IP of each individual NIC to allow network traffic to use all NICs simultaneously. The default is to use the local machine's primary host name or IP only.
- Optional. Specifies the specific port number
that the gpfdist file
distribution program should use. You can also
supply a PORT_RANGE to select an
available port from the specified range. If both
PORT and
PORT_RANGE are defined, then
PORT takes precedence. If neither
PORT or
PORT_RANGE are defined, the
default is to select an available port between
8000 and 9000.
If multiple host names are declared in LOCAL_HOSTNAME, this port number is used for all hosts. This configuration is desired if you want to use all NICs to load the same file or set of files in a given directory location.
- Optional. Can be used instead of PORT to supply a range of port numbers from which gpload can choose an available port for this instance of the gpfdist file distribution program.
- Required. Specifies the location of a file,
named pipe, or directory location on the local
file system that contains data to be loaded. You
can declare more than one file so long as the data
is of the same format in all files specified.
If the files are compressed using gzip or bzip2 (have a .gz or .bz2 file extension), the files will be uncompressed automatically (provided that gunzip or bunzip2 is in your path).
When specifying which source files to load, you can use the wildcard character (*) or other C-style pattern matching to denote multiple files. The files specified are assumed to be relative to the current directory from which gpload is executed (or you can declare an absolute path).
- Optional. Specifies usage of SSL encryption. If SSL is set to true, gpload starts the gpfdist server with the --ssl option and uses the gpfdists:// protocol.
- Required when SSL is true;
cannot be specified when SSL is
false or unspecified. The
location specified in
CERTIFICATES_PATH must contain
the following files:
- The server certificate file, server.crt
- The server private key file, server.key
- The trusted certificate authorities, root.crt
The root directory (/) cannot be specified as CERTIFICATES_PATH.
- Optional. Specifies whether gpload
resolve hostnames to the fully qualified domain name
(FQDN) or the local hostname. If the value is set to
true, names are resolved to the
FQDN. If the value is set to false,
resolution is to the local hostname. The default is
A fully qualified domain name might be required in some situations. For example, if the Greenplum Database system is in a different domain than an ETL application that is being accessed by gpload.
- Optional. Specifies the schema of the source data
file(s) in the format of
The DELIMITER character in the
source file is what separates two data value fields
(columns). A row is determined by a line feed
character (0x0a).
If the input COLUMNS are not specified, then the schema of the output TABLE is implied, meaning that the source data must have the same column order, number of columns, and data format as the target table.
The default source-to-target mapping is based on a match of column names as defined in this section and the column names in the target TABLE. This default mapping can be overridden using the MAPPING section.
- Optional. Specifies the name of the input transformation passed to gpload. For information about XML transformations, see "Loading and Unloading Data" in the Greenplum Database Administrator Guide.
- Required when TRANSFORM is specified. Specifies the location of the transformation configuration file that is specified in the TRANSFORM parameter, above.
- Optional. An integer that specifies the maximum length of a line in the XML transformation data passed to gpload.
- Optional. Specifies the format of the source data file(s) - either plain text (TEXT) or comma separated values (CSV) format. Defaults to TEXT if not specified. For more information about the format of the source data, see "Loading and Unloading Data" in the Greenplum Database Administrator Guide.
- Optional. Specifies a single ASCII character that separates columns within each row (line) of data. The default is a tab character in TEXT mode, a comma in CSV mode. You can also specify a non- printable ASCII character or a non-printable unicode character, for example: "\x1B" or "\u001B". The escape string syntax, E'character-code', is also supported for non-printable characters. The ASCII or unicode character must be enclosed in single quotes. For example: E'\x1B' or E'\u001B'.
- Specifies the single character that is used for C escape sequences (such as \n, \t, \100, and so on) and for escaping data characters that might otherwise be taken as row or column delimiters. Make sure to choose an escape character that is not used anywhere in your actual column data. The default escape character is a \ (backslash) for text-formatted files and a " (double quote) for csv-formatted files, however it is possible to specify another character to represent an escape. It is also possible to disable escaping in text-formatted files by specifying the value 'OFF' as the escape value. This is very useful for data such as text-formatted web log data that has many embedded backslashes that are not intended to be escapes.
- Optional. Specifies the string that represents a null value. The default is \N (backslash-N) in TEXT mode, and an empty value with no quotations in CSV mode. You might prefer an empty string even in TEXT mode for cases where you do not want to distinguish nulls from empty strings. Any source data item that matches this string will be considered a null value.
- Optional. In CSV mode, processes each specified column as though it were quoted and hence not a NULL value. For the default null string in CSV mode (nothing between two delimiters), this causes missing values to be evaluated as zero-length strings.
- Required when FORMAT is CSV. Specifies the quotation character for CSV mode. The default is double-quote (").
- Optional. Specifies that the first line in the data file(s) is a header row (contains the names of the columns) and should not be included as data to be loaded. If using multiple data source files, all files must have a header row. The default is to assume that the input files do not have a header row.
- Optional. Character set encoding of the source data.
Specify a string constant (such as
'SQL_ASCII'), an integer encoding
number, or 'DEFAULT' to use the
default client encoding. If not specified, the
default client encoding is used. For information
about supported character sets, see the
Greenplum Database Reference Guide.
Note: If you change the ENCODING value in an existing gpload control file, you must manually drop any external tables that were creating using the previous ENCODING configuration. gpload does not drop and recreate external tables to use the new ENCODING if REUSE_TABLES is set to true.
- Optional. Enables single row error isolation mode for this load operation. When enabled, input rows that have format errors will be discarded provided that the error limit count is not reached on any Greenplum Database segment instance during input processing. If the error limit is not reached, all good rows will be loaded and any error rows will either be discarded or captured as part of error log information. The default is to abort the load operation on the first error encountered. Note that single row error isolation only applies to data rows with format errors; for example, extra or missing attributes, attributes of a wrong data type, or invalid client encoding sequences. Constraint errors, such as primary key violations, will still cause the load operation to abort if encountered. For information about handling load errors, see "Loading and Unloading Data" in the Greenplum Database Administrator Guide.
- Optional when ERROR_LIMIT is
declared. Value is either true or
false. The default value is
false. If the value is
true, rows with formatting errors
are logged internally when running in single row
error isolation mode. You can examine formatting
errors with the Greenplum Database built-in SQL
If formatting errors are detected when loading data,
gpload generates a warning
message with the name of the table that contains the
error information similar to this message.
timestamp|WARN|1 bad row, please use GPDB built-in function gp_read_error_log('table-name') to access the detailed error row
- If LOG_ERRORS: true is specified,
REUSE_TABLES: true must be
specified to retain the formatting errors in
Greenplum Database error logs. If
REUSE_TABLES: true is not
specified, the error information is deleted after
the gpload operation. Only summary
information about formatting errors is returned. You
can delete the formatting errors from the error logs
with the Greenplum Database function
Note: When gpfdist reads data and encounters a data formatting error, the error message includes a row number indicating the location of the formatting error. gpfdist attempts to capture the row that contains the error. However, gpfdist might not capture the exact row for some formatting errors.
- For more information about handling load errors, see "Loading and Unloading Data" in the Greenplum Database Administrator Guide. For information about the gp_read_error_log() function, see the CREATE EXTERNAL TABLE command in the Greenplum Database Reference Guide
- Optional. Defines the schema of the external table database objects created by gpload.
- The default is to use the Greenplum Database search_path.
- Required when EXTERNAL is declared. The name of the schema of the external table. If the schema does not exist, an error is returned.
- If % (percent character) is specified, the schema of the table name specified by TABLE in the OUTPUT section is used. If the table name does not specify a schema, the default schema is used.
- Required. Defines the target table and final data column values
that are to be loaded into the database.
- Required. The name of the target table to load into.
- Optional. Defaults to INSERT if not specified. There are three available load modes:
INSERT - Loads data into the target
table using the following method:
INSERT INTO target_table SELECT * FROM input_data;
- UPDATE - Updates the UPDATE_COLUMNS of the target table where the rows have MATCH_COLUMNS attribute values equal to those of the input data, and the optional UPDATE_CONDITION is true. UPDATE is not supported if the target table column name is a reserved keyword, has capital letters, or includes any character that requires quotes (" ") to identify the column.
- MERGE - Inserts new rows and updates the UPDATE_COLUMNS of existing rows where FOOBAR attribute values are equal to those of the input data, and the optional MATCH_COLUMNS is true. New rows are identified when the MATCH_COLUMNS value in the source data does not have a corresponding value in the existing data of the target table. In those cases, the entire row from the source file is inserted, not only the MATCH and UPDATE columns. If there are multiple new MATCH_COLUMNS values that are the same, only one new row for that value will be inserted. Use UPDATE_CONDITION to filter out the rows to discard. MERGE is not supported if the target table column name is a reserved keyword, has capital letters, or includes any character that requires quotes (" ") to identify the column.
- Required if MODE is UPDATE or MERGE. Specifies the column(s) to use as the join condition for the update. The attribute value in the specified target column(s) must be equal to that of the corresponding source data column(s) in order for the row to be updated in the target table.
- Required if MODE is UPDATE or MERGE. Specifies the column(s) to update for the rows that meet the MATCH_COLUMNS criteria and the optional UPDATE_CONDITION.
- Optional. Specifies a Boolean condition (similar to what you would declare in a WHERE clause) that must be met in order for a row in the target table to be updated.
- Optional. If a mapping is specified, it overrides the default source-to-target column mapping. The default source-to-target mapping is based on a match of column names as defined in the source COLUMNS section and the column names of the target TABLE. A mapping is specified as either:
- target_column_name: source_column_name
- or
- target_column_name: 'expression'
- Where expression is any expression that you would specify in the SELECT list of a query, such as a constant value, a column reference, an operator invocation, a function call, and so on.
- Optional. Specifies operations to run prior to the load operation. Right now
the only preload operation is TRUNCATE.
- Optional. If set to true, gpload will remove all rows in the target table prior to loading it. Default is false.
- Optional. If set to true, gpload will not drop the external table objects and staging table objects it creates. These objects will be reused for future load operations that use the same load specifications. This improves performance of trickle loads (ongoing small loads to the same target table).
- If LOG_ERRORS: true is specified, REUSE_TABLES: true must be specified to retain the formatting errors in Greenplum Database error logs. If REUSE_TABLES: true is not specified, formatting error information is deleted after the gpload operation.
- If the external_table_name exists, the utility uses the existing table. The utility returns an error if the table schema does not match the OUTPUT table schema.
- Optional. Specify the name of the temporary external table that is created during a gpload operation. The external table is used by gpfdist. REUSE_TABLES: true must also specified. If REUSE_TABLES is false or not specified, STAGING_TABLE is ignored. By default, gpload creates a temporary external table with a randomly generated name.
- If external_table_name contains a period (.), gpload returns an error. If the table exists, the utility uses the table. The utility returns an error if the existing table schema does not match the OUTPUT table schema.
- The utility uses the value of SCHEMA in the EXTERNAL section as the schema for external_table_name. If the SCHEMA value is %, the schema for external_table_name is the same as the schema of the target table, the schema of TABLE in the OUTPUT section.
- If SCHEMA is not set, the utility searches for the table (using the schemas in the database search_path). If the table is not found, external_table_name is created in the default PUBLIC schema.
- Optional. If set to true, gpload only searches the database for matching external table objects when reusing external tables. The utility does not check the external table column names and column types in the catalog table pg_attribute to ensure that the table can be used for a gpload operation. Set the value to true to improve gpload performance when reusing external table objects and the database catalog table pg_attribute contains a large number of rows. The utility returns an error and quits if the column definitions are not compatible.
- The default value is false, the utility checks the external table definition column names and column types.
- REUSE_TABLES: true must also specified. If REUSE_TABLES is false or not specified and FAST_MATCH: true is specified, gpload returns a warning message.
- Optional. Defines SQL commands to run before and/or after the load
operation. You can specify multiple BEFORE and/or
AFTER commands. List commands in the order of desired execution.
- Optional. An SQL command to run before the load operation starts. Enclose commands in quotes.
- Optional. An SQL command to run after the load operation completes. Enclose commands in quotes.
Log File Format
Log files output by gpload have the following format:
Where timestamp takes the form: YYYY-MM-DD HH:MM:SS, level is one of DEBUG, LOG, INFO, ERROR, and message is a normal text message.
Some INFO messages that may be of interest in the log files are (where # corresponds to the actual number of seconds, units of data, or failed rows):
INFO|running time: #.## seconds INFO|transferred #.# kB of #.# kB. INFO|gpload succeeded INFO|gpload succeeded with warnings INFO|gpload failed INFO|1 bad row INFO|# bad rows
If your database object names were created using a double-quoted identifier (delimited identifier), you must specify the delimited name within single quotes in the gpload control file. For example, if you create a table as follows:
CREATE TABLE "MyTable" ("MyColumn" text);
Your YAML-formatted gpload control file would refer to the above table and column names as follows:
- COLUMNS: - '"MyColumn"': text OUTPUT: - TABLE: public.'"MyTable"'
If the YAML control file contains the ERROR_TABLE element that was available in Greenplum Database 4.3.x, gpload logs a warning stating that ERROR_TABLE is not supported, and load errors are handled as if the LOG_ERRORS and REUSE_TABLE elements were set to true. Rows with formatting errors are logged internally when running in single row error isolation mode.
Run a load job as defined in my_load.yml:
gpload -f my_load.yml
Example load control file:
--- VERSION: 22.214.171.124 DATABASE: ops USER: gpadmin HOST: mdw-1 PORT: 5432 GPLOAD: INPUT: - SOURCE: LOCAL_HOSTNAME: - etl1-1 - etl1-2 - etl1-3 - etl1-4 PORT: 8081 FILE: - /var/load/data/* - COLUMNS: - name: text - amount: float4 - category: text - descr: text - date: date - FORMAT: text - DELIMITER: '|' - ERROR_LIMIT: 25 - LOG_ERRORS: true OUTPUT: - TABLE: payables.expenses - MODE: INSERT PRELOAD: - REUSE_TABLES: true SQL: - BEFORE: "INSERT INTO audit VALUES('start', current_timestamp)" - AFTER: "INSERT INTO audit VALUES('end', current_timestamp)"
See Also
gpfdist, CREATE EXTERNAL TABLE in the Greenplum Database Reference Guide


text:
ECHO Hedge Trimmers…A Cut Above the Rest!
For professionals and discerning homeowners who demand performance, ECHO Hedge Trimmers deliver. Available in single-sided and double-sided blade configurations, as well shafted models, ECHO Hedge Trimmers are tough, reliable and loaded with intelligent features like: a throttle lock-out to help prevent accidental blade engagement, commercial-grade gear cases and cutting blades for the heaviest applications, and vibration-reducing engine mounts and padded handles for operator comfort.
This is not an offer for credit and should be used for estimation purposes only based on the information you provided. You should not base your decision on this estimate alone. Title, registration, tax and other fees, and personal circumstances such as employment status and personal credit history, were not considered in the calculations.
Length - 21 in.
Cutter Type - Double-sided, double-reciprocating RazorEdge™
Consumer - 5 years
Commercial - 2 year
Rental - 90 days
Due to continued challenges across supplier networks as well as increasing logistics costs, product pricing, freight charges, specifications, and features are subject to change at any time without prior notice. Please confirm all information with your local dealership.
Price, if shown and unless otherwise noted, represents the Manufacturer's Suggested Retail Price (MSRP) or dealer unit price and does not include government fees, taxes, dealer vehicle freight/preparation, dealer document preparation charges, labor, installation, or any finance charges (if applicable). MSRP and/or final sales price will vary depending on options or accessories selected; contact dealer for more details.
Images, where available, are presented as reasonable facsimiles of the offered unit and/or manufacturer stock images. Non-standard options or features may be represented. No guarantee of availability or inclusion of displayed options should be inferred; contact dealer for more details.


text:
Maystead, Bisher earn First-Team honors
By Ed firstname.lastname@example.com — Hayley Maystead and Brandon Bisher played major roles in the success of the Hillsdale High School boys and girls basketball teams this season.The Lenawee County Athletic Association took notice.Maystead was a unanimous pick for the All-LCAA girls basketball First Team, while Bisher was selected to the All-LCAA boys basketball First Team. The league announced its all-conference awards Monday.Bisher was the lone Hornet to be named to the boys First Team. Jimmy Chase was an All-LCAA Second Team selection, while Patrick Drews received honorable mention.Maystead was the lone Hillsdale girls player to receive All-LCAA honors this season.Maystead was an absolute force for the Hillsdale girls basketball team this season. The senior finished as the leading scorer in the conference, averaging 24.2 points per game. Maystead hit the 30-point mark six times this season, including a school-record 39 point effort Feb. 1 against Hudson in the winter homecoming game. In the Class C district tournament, Maystead scored 18 points in the Hornets' victory over Jonesville and finished with 19 points in the district final against Adrian Madison. Her 505 total points is a Hillsdale girls basketball season record. Maystead's season also gave her the school record in career points.She was also strong on the boards, grabbing 161 rebounds (8 per game). Maystead also forced 68 steals (3.4 per game) and was an 83 percent free throw shooter.Joining Maystead on the girls First Team are Lexi Johnson (Onsted), Claire Denecker (Blissfield), Kayla Spires and Kelsey Lampkowski (both of Ida).The All-LCAA girls Second Team consists of Emma Essen (Blissfield), Kelsey Ross (Onsted), Emily Ladd (Hudson), Allison Salenbien (Dundee), Sophie Miller (Columbia Central) and Ashley Shay (Columbia Central).Majerle Slater (Onsted), Bree Maddux (Ida), Vanessa Ewing (Dundee), Jaylynn McGarry (Erie Mason) and Paige Stark (Erie Mason) received honorable mention.Onsted and Ida shared the LCAA title with 12-2 records. Blissfield was third at 10-4, while Columbia Central was fifth at 8-6. Hillsdale and Dundee both finished 6-8, while Erie Mason (2-12) was seventh and Hudson (0-14) placed eighth.Bisher was one of the top sharpshooters for the Hillsdale boys team this season. The junior was part of a deep core that sparked the Hornets to a 19-2 record the outright LCAA championship (12-2 in league play). The Hornets will play in the Class C district final against Adrian Madison tonight at Addison High School.Joining Bisher on the First Team are Brent Clark (Dundee), Jacob Skaggs (Erie Mason), Roonie Crist (Columbia Central) and Chris Chrzan (Ida).Chase earned Second-Team honors along with Columbia Central's Ryan Adams and Onsted seniors Reese Klebba and Zack Cranson and junior Devin Louden.Drews was honorable mention along with Justin Boies (Hudson), Jordan Wilson (Blissfield), Riley Boyers (Columbia Central), Aaron Anthony (Dundee) and Caleb Yeary (Ida).A tight conference race saw Columbia Central finish second to the Hornets with a 10-4 league record. Onsted was third at 9-5, while Dundee took fourth at 8-6. Erie Mason was fifth at 7-7 and Ida was sixth at 6-8. Blissfield and Hudson both went 2-12 and tied for seventh.


text:
Today in the news: Arrests made in killing of ambassador
News to knowLibyan authorities said today that several arrests have been made in connection with the murder of a U.S. ambassador and three others. Officials did not reveal the names of those arrested but said they have been detained and are being investigated. Meanwhile, violence continued Thursday in Africa and the Middle East because of an anti-Muslim video posted on YouTube.Quote of note"The entire cast and crew are extremely upset and feel taken advantage of by the producer. … (We are) shocked by the drastic rewrites of the script and lies that were told to all involved. We are deeply saddened by the tragedies that have occurred." – Statement from the actors who appeared in the anti-Muslim video. Several have come forward to say the dialogue was dubbed over to make a one-time innocuous film become anti-Muslim.Hot video: Riot breaks out over stolen money thrown into streetsSuspected bank robbers threw cash out the window of their vehicle during a pursuit in Los Angeles.GateHouse News Service


text:
The Papertoy Network!
downloadable! http://www.graad.org/paperpeople/archive.html
here with the Jello Biafra by Andrea "KNGL" Longo
and here with my "Sick Bros"
Views: 93
MySpace Facebook
Join Nice Paper Toys
Welcome toNice Paper Toys
Sign Upor Sign In
Or sign in with:
Started by Zo dude in Sample Title. Last reply by Greenelf Feb 24, 2018.
Started by Shadree in Uncategorized May 21, 2017.
Started by Adam T in Sample Title. Last reply by remigio ansorena Nov 4, 2015.
Started by Shadree in Uncategorized. Last reply by eddie rodriguez Sep 4, 2015.
Started by VinsArt in Sample Title. Last reply by Castleforte Jul 31, 2015.
Started by 3Eyed Bear in Sample Title. Last reply by Steven Johnson Jan 16, 2015.
Started by Shadree in Uncategorized. Last reply by Shadree Aug 20, 2014.
Started by Daveybird in Sample Title Jul 22, 2014.
Started by Neurogami in Sample Title May 19, 2014.
Started by ryan ellison in Uncategorized Nov 5, 2013.
Get Badge
© 2023 Created by Castleforte.
Powered by
Badges |
Report an Issue |
Terms of Service
Please check your browser settings or contact your system administrator.


text:
RTI in Maine
Response to Intervention (academic & behavior) in Maine
Search Friends
Advanced Search
Sort by:
Recently AddedAlphabeticalRandom
I understand.
Welcome toRTI in Maine
Sign Upor Sign In
© 2023 Created by Christen Stande.
Powered by
Badges |
Report an Issue |
Terms of Service
Please check your browser settings or contact your system administrator.


text:
This article was originally published in the July/August 1993 issue of Home Energy Magazine. Some formatting inconsistencies may be evident in older archive content.
| Home Energy Home Page | Back Issues of Home Energy |
Home Energy Magazine Online July/August 1993
Insulation Damage
As a self-employed, utility-sponsored, residential and commercial energy auditor, I think you should make note of an alarming recent discovery in truss floor construction. I inspected a 15-month-old home in southeastern Minnesota during December of 1992. The 18 in. tall Blandex waferboard at the perimeter of the basement ceiling was covered with 6 in. fiberglass insulation that, when removed and shaken, deposited a large amount of moisture on the floor. The 0.5 in. thick Blandex behind the insulation was covered with mold. The extremely cold surface behind the insulation with no vapor barrier appears to cause this problem, which may easily result in extreme structural damage in 2-3 years. Unfortunately, half of the perimeter was inaccessible because the ceiling had already been drywalled. If you are building truss floor construction, be sure to provide a tightly sealed vapor barrier on the warm side of the insulation in the basement ceiling perimeter in cold climates.
Jonathan Ask
Fridge Replacement--One Drawback
The article Refrigerator Replacement in Florida: A Case Study (HE Jan/Feb '93, p.20) states that the new refrigerator's demand is less sensitive to ambient temperature. While true on an absolute basis, it is not clear that it is true on a relative one. The coincident peak demand of the old refrigerator was 126% of its yearly average demand, while the new refrigerator's peak is 138% of its average. (The article didn't give the minimum summertime demand.) From Figures 2 and 3, comparing the energy uses of the old and new refrigerators, the ratios of the summer peaks to the winter lows are about 2.7 and 4, respectively. This suggests that replacement of the older refrigerator reduces current summer peak demand, but it may paradoxically also reduce the average system load factor.
Robert Clear
Author Danny Parker replies: Dr. Clear is correct. The new refrigerator does have a lower relative load factor than the old unit. However, since the peak load of the new refrigerator is less than half that of the old one, the absolute peak demand (which is often important to utilities) is significantly reduced. [Editor's Note: Load factor is the average load divided by peak load for a given time period, an indication of how well the power system is utilized. Utilities strive for a high load factor.]
Incidentally, the reason that the new refrigerator has a lower load factor on a relative basis is that the load due to door openings is more significant for the new unit. About 7% of the energy use of the old guzzler was due to door openings; since the absolute load of te warm air entering during door openings is the same in the new unit, this accounts for about 19% of its (much lower) energy use. As refrigerators become more efficient, the effect of door openings, and the need to revise the DOE test procedure to reflect this factor, are becoming increasingly important.
By the way, the table on page 22 of the article incorrectly gives a figure of 0.0 kWh for refrigerator minimum daily use. It should be 1.0 kWh.
| Back to Contents Page | Home Energy Index | About Home Energy |
Home Energy can be reached at: firstname.lastname@example.com
Home Energy magazine -- Please read our Copyright Notice
- 1


text:
Police & Fire: January 8, 2013
Sault Police are investigating the disappearance of a laptop computer, valued at $2,000, from a vehicle parked outside a Riverside Drive condo complex.
The company-owned device taken from a work truck sometime before 11:30 a.m. Monday. Police noted no sign of forced entry.
There are no suspects in this matter.
City police are also investigating a recent incident at a fueling station in the 1000 block of W. Easterday where a woman attempted to pay for her gas with a credit card, only to have it rejected. The woman was instructed via intercom to come inside to pay for the $50.86 but she opted to just drive away.
The investigation continues as police have a good description of the suspect, the vehicle she was driving and at least a partial license plate.
No arrests have been made to date.


text:
Find a Kazakh accountant in Pennsylvania. We verify the licenses of all accountants listed on our directory once a year to make sure they are in good standing with the state agency issuing their license.
All Kazakh accountants in Pennsylvania and other accountants in Pennsylvania who provide translators or offer specialized accounting services to the Kazakh community are encouraged to request a free directory listing on our site.


text:
Best Friend Magnet
Best Friend Magnet
Get $5.00 OFFOn any purchase above $25.00!
Oops, there seems to be an error, please re-enter your email address.
These delightful 3-D doggies not only keep your odds and ends in check, they add whimsy to home or office. Strong yet lightweight magnet, beautifully hand painted, sculpted resin head. Imported. 2"sq. Hurry! Quantities are limited!
ReviewsBe the first to write a review
Your Satisfaction is Guaranteed
No sale is ever final. We unconditionally guarantee all merchandise. If you are not completely satisfied with your purchase, return it within 60 days of receipt to make an exchange or receive a refund (excluding shipping and handling charges). After 60 days, we will be happy to send a merchandise credit certificate to you, good towards a future purchase.
Customers Who Bought This Item Also Bought...


text:
Abarca Sandals Potro
Genuine Menorcan abarcas. Made by our own master craftsman, guaranteeing quality, comfort and our signature at the forefront of the market. The abarca sandal is still the traditional footwear that never goes out of fashion, a classic and most typically Menorcan model that looks fantastic on the whole family.
Colors: Yellow/Silver
Materials: Potro / Metalizados
Made with 100% natural, authentic, high quality leather.
Shipping companies:
- European Union: Shipments are made via FEDEX.
- All of Spain: Shipments are made via Envialia.
Shipping costs:
- European Union: Up to 2.5kg, from €12.50
- Spain (Peninsula and Balearic Islands): From €5 to €9.
- Rest of the world: Consult costs at firstname.lastname@example.com
- For orders greater than €100, shipping costs are free within Spain.
Shipping times
European Union: Shipments takes between 5 and 14 days.
Spain and Portugal: Shipments takes between 4 and 8 days (6 days average). If you are not home at the time of delivery (Envialia), a delivery notice will be left or you may be contacted at your contact telephone number that you provided so as to arrange delivery.
Shipments are not made on weekends and holidays.
Returns and exchanges
Exchanges or returns on your order can be made within 14 business days from the date of delivery of you order. (According to article 44 of Law 7/1995, from the 15th of January for Retail Commerce Planning modified by Law 47/2002, from the 19th of December).
More information at www.benestarmenorca.com/en/guarantees