text:
19 October 1989
Jack Hibberd
McPhee Gribble
Published in The Age
I tend to assess Australian literature according to four cruel criteria:
1. Was it worth writing?
2. Was it worth publishing?
3. Is it worth reading?
4. Is it worth reviewing?
Many books slip past criterion 1: getting a book out of the system can bring the ex-ad man, single mother or jaded journo - addled with years of quixotic literary imaginings - into a useful contact with exterior reality.
But not many, in my estimation, get past criterion number 2. Memoirs of an Old Bastard, though written by one of our most distinguished playwrights, is no exception.
There's nothing wrong with the idea of an affectionate look at Melbourne through the eyes of a drunken, literate, old member of its Establishment. There should, theoretically, be nothing wrong with the countless surreal situations which this takes us through, in an effort to elucidate the soul of Australia's most endearing city. There's nothing wrong with a lost daughter sub-plot. There probably is something wrong with dragging in literati under such pseudonyms as F Rank Morguehouse, Halloween Gurner and Bob L Arse - especially to those of us who believe Australian literature to be masturbatory enough already. But this element is merely a grain of sand against the reader's neck. It is the whole uncomfortable yoke we must examine.
Memoirs of an Old Bastard is a cartoon. A rambling, discontinuous collection of frames, more accurately. It rips us through one dissolute, chaotic, violent, surreal situation after another. The central character and narrator ("an elderly millionaire...returning to Melbourne after a long and mysterious absence", the blurb informs) survives innumerable encounters with pugnacious colleagues, savage dogs, buxom countesses and cantankerous relics (human and automotive) - in hotel bars, restaurants, and the private homes of quality folk. There is no plot.
I know plots are old-fashioned. I know this banal and meaningless existence is best evoked by art which comes and goes in a kind of boundary-less void. But Memoirs of an Old Bastard is no existential masterpiece. It could therefore do with a few anachronisms such as plot-points and motivation. And characters could grow (or shrink - I'm not fussy); and the story could move toward something resembling a resolution - even if only to cleverly reverse it, or send up the whole notion. Something should happen, apart from hundreds of lightning raids into the improbable, the disturbing and the (allegedly) hilarious, by characters whose reasons for doing so are never clear.
You'd think an accomplished playwright would know about these things.
The rules of writing - which do apply, of course, to parody and farce - must be mastered before they can be transcended. The principal one, arguably, is that characters' compulsions, flaws, whatever, must impel the story. And that probably provides the key to this book's downfall. For all his drunken rumination, we never get beneath our narrator's skin. He moves us through one piece of mayhem after another, never pausing to examine, or to make connections... Even the "reflection" is there chiefly for its immediate laugh-value. It never has depth; it never elucidates character, plot, or anything else. We haven't a clue, in the end, what really moves our narrator, because his story keeps us distracted with novelty.
The aforementioned lost-daughter sub-plot could have given this book a shred of integrity: however it consists entirely of italicised passages along the lines of: "Perdita, your mother sucked me in." And, "I have been prepared to go anywhere to find you. Even Sydney." These cris de coeur are never apropros of anything in particular, and rarely even in character. Not integrated, in other words. In the end they just peter out, leaving us hanging.
Though a far better novel, John Tittensor's recent Carmody Comes Home tends, at times, to be not so much a story as a catalogue of the grotesque. Memoirs of an Old Bastard is nothing but. And catalogues, unhappily, do not engage a reader. The prose itself is choked with would-be amusing characters such as Sir Phosphorous Sewer; with local literary allusions; with wine-labels and gourmands' recipes - and with humour too obvious to deserve the name:
The jogger was none other than Timothy Dow-Jones, a scion of one of Melbourne's oldest and most fortune-favoured families. Educated at Scotch College and Cambridge, Timothy commanded his family's large share-broking business... He announced: "What a bullish day. I feel a bit bearish this afternoon."
The names of these minor characters are almost a sub-plot in themselves: Morrie Bund, Huon le Pine, Phyllis Fuller, Rat O'Tuohy, Glen Waverley, Edith Vale. Perhaps there is something amusing in these travesties, and in the novel as a whole, which this humorless pedant has entirely missed.
Buy it and see. The only thing I liked was the title.
Visitor's : Add Comment


text:
Another modern beauty from Alchemy Architects.
From The Site:
A violinist with the Minnesota Orchestra and her family enjoy off-grid living in the original weeHouse located on Minnesota prairie land near Lake Pepin. The interior is completely wrapped in douglas fir and features IKEA built-in cabinetry and kitchen elements as well as floor to ceiling Andersen windows on both sides. The exterior is clad in cementitious siding painted with an oxidizing paint which provides a rustic yet hardy finish.
Subscribe To Our Newsletter
Join our mailing list to receive the latest news, updates and awesome giveaways!

subset: commoncrawl


text:
New Addition To The ARQ Family!
Our team is getting bigger!
Our latest recruit is an engineering graduate, Imran Siddiqi (Siddiq) from Forest Gate.
Siddiq was looking for a change in career and after travelling various parts of Europe decided to join us as he has a penchant for property.
He has taught maths and english to students and has also studied law. The team have already named him Mr Wikipedia since we have found him to know something about everything!
We are delighted to have him on board.
Good luck Siddiq. We wish you the very best in your future with us.


text:
Beacon P & C
- Beacon P & C
President: Nigel Beagley
Secretary: Tanya Gibson
Treasurer: Petrina Poole
The Beacon P & C is a volunteer organisation of parents and community members working together to fundraise to assist in the purchasing of equipment for the education of students at Beacon Primary School. The P & C's main fundraiser is the sale of lunches during the Winter Sports Season. P&C meetings are held once per term, new parents and members welcome.


text:
SOURCE: Information Builders
June 27, 2016 09:15 ET
WebFOCUS Wins Best IT Software; Customer Service Recognized for Excellence; and Omni-Gen Lauded for New Product Innovation
WebFOCUS Wins Best IT Software; Customer Service Recognized for Excellence; and Omni-Gen Lauded for New Product Innovation
NEW YORK, NY--(Marketwired - Jun 27, 2016) - Information Builders, a leader in business intelligence (BI) and analytics, information integrity and integration solutions, today announced that the company has been honored with three awards at the 2016 Annual IT World Awards for product innovation and customer service.
Tweet This: .@infobldrs' WebFOCUS and Omni-Gen products and its customer service team honored at 11th Annual IT World Awards http://ow.ly/3NcV301FAXR
Information Builders' flagship WebFOCUS BI and analytics platform was named the Gold Winner for Best IT Software, while Omni-Gen was named a Bronze Winner for New Products and Services. The company's Customer Support Services team was also selected as a Silver Winner in the Customer Service Department of the Year category.
These industry and peer recognitions provided by the Network Products Guide are among the premier information technology awards honoring achievements and recognitions in every facet of the IT industry. Winners from all over the world will be honored in San Francisco on Monday, June 27, 2016 during the 2016 SVUS Red Carpet Awards Ceremony Dinner in San Francisco.
The WebFOCUS platform expands the company's position as the leader in providing BI solutions for large-scale, customer-facing, and third-party partner initiatives. WebFOCUS delivers many rich analytical capabilities, and integrates the four critical elements for smarter decision-making: business intelligence, performance management, advanced analytics, and data integrity. WebFOCUS is available in three editions to help organizations use the right information delivery approach for every kind of user.
Information Builders' Omni-Gen™ enables the model-driven deployment of data mastering, cleansing, and integration applications. The Omni-Gen platform lets businesspeople and developers work efficiently and iteratively together to define and deploy models and cleansing plans, thereby improving communication and outcomes while accelerating the time to value of these initiatives. Omni-Gen stars with business-level requirements and generating many of the artifacts needed to implement the project. As business requirements develop and change, the artifacts are regenerated rather than re-coded, avoiding the complexity, time, and cost of requirements gathering, specification, development, and testing, without sacrificing quality or performance.
Gerald Cohen, president and CEO, Information Builders, said:
"We're honored to be recognized by 11th Annual IT World Awards in IT software, best new products, and customer support. This esteemed industry recognition demonstrates our commitment to innovative and transformative BI solutions, and our continued investment to support our solutions with the best employees. The value companies find in our industry-leading solutions and customer service differentiates us from our competition."
About NPG's IT World Awards
As industry's leading technology research and advisory publication, Network Products Guide plays a vital role in keeping decision makers and end-users informed of the choices they can make in all areas of information technology. The Annual IT World Awards is part of the SVUS Awards® recognition program from Silicon Valley in the United States of America which also includes other programs such as CEO World Awards, Consumer World Awards, Customer Sales and Service World Awards, Golden Bridge Awards, Globee Fastest Growing Private Companies Awards, Info Security PG's Global Excellence Awards, Pillar World Awards, PR World Awards, and Women World Awards. To learn more, visit www.networkproductsguide.com
About Information Builders
Information Builders provides solutions for business intelligence (BI), analytics, data integration, and data quality that help drive performance improvements, innovation, and value. Through one set of powerful products, we enable organizations to serve everyone -- analysts, non-technical users, even partners, customers, and citizens -- with better data and analytics. Our dedication to customer success is unmatched with thousands of organizations relying on us as their trusted partner. Founded in 1975, Information Builders is headquartered in New York, NY with global offices, and remains one of the largest independent, privately-held companies in the industry. Visit us at informationbuilders.com follow us on Twitter at @infobldrs, like us on Facebook, and visit our LinkedIn page.
Press ContactsKathleen Moran
Information Builders
(917) email@example.com
Lillian Dunlap
(781) firstname.lastname@example.com
Press ContactsKathleen Moran
Information Builders
(917) firstname.lastname@example.com
Lillian Dunlap
(781) firstname.lastname@example.com
See all RSS Newsfeeds


text:
Cameron Travelstead, 25, of Jackson, is facing up to 40 years in prison after his conviction in a child pornography case.
Hinds County Circuit Judge Jeff Weil, Jr. recently set Travelstead's sentencing for October 29, 2015. A Hinds County Jury convicted Travelstead of one count of possession of child pornography. The five day trial was presided over by Judge Weil.
The case stemmed from a joint investigation involving the Attorney General's Cyber Crime Unit/Internet Crimes Against Children task force, the Hinds County Sheriff's Office (an affiliate of the task force), and the Federal Bureau of Investigation (FBI). The investigation revealed that Travelstead was downloading and sharing hundreds of images and videos of child pornography.
Our ICAC network is extensive and helps law enforcement throughout our state and nationwide in the fight against child pornography. We appreciate the hard work of the Hinds County District Attorney's Office, the FBI and the Hinds County Sheriff's Office as well as each of our local law enforcement agencies, as we track down these child predators and bring them to justice.
The case was tried jointly by Special Assistant Attorney General Brandon Ogburn and Jamie McBride of the of the Hinds County District Attorney's Office.


text:
- As seen on this week's WWE SmackDown, Lana lost a quick rematch to SmackDown Women's Champion Naomi with the title on the line. In the Fallout video below, Dasha Fuentes approaches Lana for post-match comments but Lana is too emotional to speak.
- WWE SmackDown Producer Brian "Road Dogg" James tweeted the following to the blue brand women's division after tonight's show, which saw Naomi retain over Lana and Carmella win the second-ever women's Money In the Bank Ladder Match in the main event.
Couldn't be more proud of the entire #SDLive roster but tonight was all about the women! Great job tonight ladies! The bar has risen! #OUDK— Brian G. James (@WWERoadDogg) June 28, 2017
Follow Marc Middleton on Twitter at @this_is_marc. Got a news tip or correction? Send it to us by clicking here.


text:
Lead Production Associate Position Description
The Lead Production Associate helps achieve the mission of Adelante Thrift by receiving and processing donations according to established procedures. This position will work with a team of staff and volunteers to pick-up donations from locations across the community, screen all donated good for sales floor quality, and accurately price items.
- Help pick-up and unload donations from trucks.
- Review quality of items to ensure only saleable merchandise is marked for the sales floor.
- Follow established procedures to sort and price items according to factors determined by the Store Manager.
- Help maintain an organized, safe, and clean back of store.
- Assist with transferring and receiving items from the warehouse.
- Work with volunteer team to maintain listings for on-line merchandise.
- Other duties, as assigned.
- Ability to safely lift 50 lbs, stand for long periods of time, as well as bend, stoop reach, and walk unassisted.
- Visual acuity to sort items according to department, type, size, and color.
- Excellent computer skills including ability to quickly learn and troubleshoot inventory management software and peripherals.
- Past warehouse or retail experience and understanding of inventory control a plus.
- Ability to work effectively in a cross-cultural environment with a team made of staff and volunteers.
- Intermediate level of English (oral, written, and interpersonal communication) required. Ability to communicate in Spanish or Nepali a plus.
- Willingness to cross-train on other functions of the store team a plus.
- Driver's license with safe driving record. Successful candidate must pass Kansas DOT Physical Exam.
- Must be willing to work a flexible schedule that includes evenings and weekends.
This is a part-time (29 hours per week) position. Salary is $10/hours. Paid holidays. No other benefits available for part-time positions.
Successful candidate must be able to start training March 3, 2015.


text:
We enjoy hearing from our Web site visitors.
Please use the form below to share your experience with us.
Not a Member? Become one today!
Stay Up to Date with Email Updates
© 2017 St. Gianna Molla Guild NEW C/O Hjortness and Associates 851 Racine St. Suite B Menasha, WI 54952 | (920) 725-1040


text: A high-quality reproduction based on Dave Hobrecht's original charcoal and pastel painting entitled, "Solo Flight." When Hobrecht went on a fly fishing trip to Jackson Hole, Wyoming, he was instantly inspired to paint a fishing scene, and to memorialize the events from his trip. In Hobrechts Solo Flight, a man any man, really is seen fly fishing in the great outdoors, alone with his thoughts and at one with nature. Flying solo. Available in Black, Grey, and White.


text:
Samantha Lang - Carlotta
In this interview with director Samantha Lang, who's recent film Carlotta was nominated for 5 AACTA Awards, we speak about how she started her career, the importance of mentoring younger directors and her transition from directing to writing and producing.
Ben Mizzi
Writer/ Director who hopes to finish his first feature screenplay soon and get it made. I also publish and manage this site.


text:
I'm thrilled to say my travel article about solo cruising has now been published in the current magazine as a 4 page feature, if you can't get to your local WHSmith to pick up a copy you can read it here -
The Platinum Sessions
until April the 11th you can book a 30 minute mini session for only £125, you get all of the edited images via a digital download and you save at least £125!! book with a £25 retainer and the balance is due on the day. Available at Jesmond Dene, Saltwell Park and Tynemouth Longsands. BOOK NOW
As my diary is nearly full for the year now I'm offering 15% off all wedding photography packages booked before April 31st, get in touch for more details
Book a wedding photography package and get a complimentary pre-wedding shoot
For a limited time only on all bookings of 4 hours or over you can get a complimentary pre-wedding shoot with images on disk for only £335
All Images Copyright Mandy Charlton Photography 2012 - All Rights Reserved 1 Langhorn Close, Heaton, Newcastle upon Tyne NE6 1XH
Inspirational Newcastle wedding and portrait photography
wedding photographer newcastle
Mandy Charlton is a Wedding Photographer and portrait photographer and covers the following regions, Northern England, Newcastle, Sunderland, Durham, Wearside, Tyneside, Cumbria, Northumberland, Scotland, Yorkshire, St Andrews, Dundee, Norfolk, Devon,Plymouth Asian Wedding photography, Civil Partnerships, childrens photographer, family portrait photographer newcastle, family photography newcastle, wedding photography Northumberland, Durham, Cumbria, Yorkshire, Scotland, Wales, Cardiff, Fort William, Dumfries and Galloway, Angus, Ayr, Glasgow, Skye and the Islands and Highlands, in fact every single region of England, Wales and Scotland.


text:
Donald Trump is making headlines again – this time for praising former Iraqi dictator Saddam Hussein for killing terrorists "so good."
According to The Associated Press, the presumptive Republican presidential nominee made the controversial remarks at a campaign rally that took place Tuesday in Raleigh, North Carolina.
"Saddam Hussein was a bad guy, right? ... But you know what he did well? He killed terrorists. He did that so good," he said. "They didn't read 'em the rights; they didn't talk. They were a terrorist; it was over."
He added, "Today, Iraq is Harvard for terrorism."
According to the Washington Post, Trump has been known to praise the tyrant before, saying this at a February event in New Hampshire;
"Whether you like Saddam Hussein or not, he used to kill terrorists,"
In October 2015, the Republican nominee told CNN's Jake Tapper that the world would be a better place if Hussein and Libyan dictator Moammar Gadhafi were still in power.
"Right now, Iraq is a training ground for terrorists," Trump said at the time. "Right now, Libya – nobody even knows Libya; frankly, there is no Iraq and there is no Libya. It's all broken up. They have no control. Nobody knows what's going on."
Presumptive Democratic presidential nominee Hillary Clinton's campaign was quick to respond to Trump's latest comments.
"Donald Trump's praise for brutal strongmen seemingly knows no bounds," Jake Sullivan, a senior policy adviser, said in a statement Tuesday. "In reality, Hussein's regime was a sponsor of terrorism – one that paid families of suicide bombers who attacked Israelis, among other crimes. Trump's cavalier compliments for brutal dictators, and the twisted lessons he seems to have learned from their history, again demonstrate how dangerous he would be as commander-in-chief and how unworthy he is of the office he seeks."
House Speaker Paul Ryan, R-Wis., distanced himself from Trump's statements.
"(Saddam Hussein) was one of the 20th century's most evil people," Ryan said in a Fox News interview Tuesday evening. "He was up there. He committed mass genocide against his own people using chemical weapons. Saddam Hussein was a bad guy."
Critics also took to social media to weigh in.


text:
Voice Over Script for Box for iPhone and iPad
Box for iPhone and iPad, it works the way you want it, fast, simple, and powerful. You can view more than hundred types of files.
And even present right from your iPad.
Quickly search for documents and within documents.
And do a lot more with hundred of partner apps.
Everything you need to work on the go.
With the highest level of encryption and controls you expect from past.
May be its time to leave your laptop behind.
Box for iPhone and iPad.


text:
Conversation State on the Client using Applets
Web applications often require a large amount of data to be stored to maintain the session state of the clients, spanning multiple requests. There are multiple options to store session state, including hidden form fields, cookies, the web layer (the HTTPSession), the EJB layer (rarely, if you are a fan of stateful session beans), and finally the database. (The last thing you want to do is use your database as a "scratch pad" for each client!) Experience says that storing state information at the database or EJB layer has limitations and performance concerns.
For a browser-based web application, whose architecture is realized through a servlet on the server side, it is typical that we store the client's session state at the server end. This means that we dump the aggregation of the data of all clients into HTTP sessions. As a result, our architectures have inherently given way to overloaded servers that spend more of their energy and potential in maintaining clients' HTTP session state rather than actually serving requests. Yes, we do have the option of scaling the servers to meet the concurrency needs beyond these constraints through clustering or other methods. However, the fact remains that the much of the effort spent by servers in maintaining HTTP state information for each client (in terms of space complexity) is very high compared to the actual servicing of the client requests.
Let's plug in values to see the order of magnitude. Suppose that for a typical web application, an application server stores 300K of data per client HTTP session and is expected to serve 1000 concurrent users. Straight away, 300MB of memory is eaten up by the server's function of maintaining clients' HTTP session states, leaving the rest for actual request processing.
The real problem, the reason that the server is made to store all the HTTP session states of the clients, is that the HTTP protocol is stateless. That means that between two requests, a client communicating through HTTP to a server will lose track of the data stored in the current session or conversation. So, we decided to dump states of all clients on the server. That is exactly the point. Now, let us see an alternative to work around this problem.
A New Approach
Here, I propose an applet-based approach to persist HTTP state information on the client end that can replace some of the techniques discussed above. The idea is to distribute an applet to each client on the first HTTP request. This applet would be persisted as long as the conversation with the server, or according to the business logic. Each client's state information will be tracked using the applet at its own end. Between multiple pages of navigation, the applet would serve as a "session tracker." The applet will be disposed when the conversation is over with the server according to the business logic (for example, the checkout option on an e-shopping site) or when the user closes the browser.
To visualize how it would work for an e-shopping application, we will look at a simple e-book shop that sells different types of books. The application consists of multiple web pages containing books classified just as they are on Amazon.com. As the user navigates the pages in the website, he can keep adding books that he intends to buy to his "shopping cart."
In the traditional method of storing client session state in the server's HTTP session, the browser would post HTTP requests to the server and the server would maintain the shopping cart. Instead, what we are going to do is to update the session state stored in the applet residing the client side. One plus is that we don't communicate over the network here to update session state. Another advantage is that the server is going to bother about a client only when it actually requires server-side processing and validation, not when the user does trivial actions like deleting or modifying his shopping cart.
On login, the server would send back an applet to the user, which acts as the shopping cart for the user throughout the current session. One way to do this is to embed an applet tag in the returned HTML/JSP page, so that the applet is loaded and initialized in the client's browser. This effectively bootstraps the applet as the shopping cart for the user.
Remember, to use the applet as a session tracker, the session state data need to be persisted across pages until the user decides to check out. But we have a problem: when the user clicks to move on to another page, the browser simply moves the existing Document instance to History and creates a new Document. Consequently, our applet--part of the Document--along with the session state data is lost. To overcome this problem, we use a simple yet interesting characteristic of applets:
Of course, this approach has all the limitations that any applet-based client has. Applet-flavored user interfaces require a basic Java runtime at the client side. Especially when the application is accessed over the internet, this means that some users need to download and install Java plugins for their browsers. It is easier, however to do that across all user desktops if the application runs within a managed intranet.
Another effect of this approach is that the client machine needs adequate memory to store session data. Since we are deploying our applet as the delegate at the client side to store session state, any memory leaks could crash the user's browser or JVM. To avoid this, memory requirements need to be analyzed and taken care during development.
However, if you are wondering if security is a limitation, think again: our session tracker would be loaded on the AppletClassloader which has strict but customizable security features.
Source : www.java.net
From Ethan Nicholas's Blog
Building a minimal JRE
The first thing I have to do is establish that this project is feasible. Remember that even though it has been approved, it could alway be un-approved (disapproved?) at any point in the future if things aren't looking good. So I figured I would start out by creating a simple, stripped-down JRE installer that contained only the functionality necessary to run System.out.println("Hello world!"), to get an estimate of the size reduction we could expect.
Stripping out the unecessary classes is easy -- you just run Java with the -verbose option to get a list of all of the classes it loads while running the Hello World program. Those classes are all that we need to include in rt.jar.The real problem is the rest of the functionality. My devel build of the Java 6 JRE contains 683 files totalling 119MB. Many of them are not necessary to run Hello World, but which ones? Determining which files were truly necessary and which weren't could be a tough job, so I made my computer determine it for me.
I wrote a simple program which would iterate through all of the files in the JRE. It would remove a file and then attempt to run the Hello World program using this stripped-down JRE. If the test succeeded, the file was evidently unnecessary. If the test failed, the file was deemed necessary and restored. After going through all of the files in this fashion, I was left with an extremely minimal JRE that could run Hello World and... well, that's about it. But it at least provided a starting point. Building a working installer from this JRE was itself a challenge, because several of the files that weren't necessary to run Hello World were still necessary to successful install the JRE, but I persevered and now have a fully functioning, minimal JRE.
I built two JREs using this methodology: one with a program that prints "Hello World" to System.out, and one with a program that displays an empty
java.awt.Frame. Here are the results:
Java 6 Runtime Environment: 15.5MB
"Hello World" JRE: 2.6MB
java.awt.Frame JRE: 3.5MB
The Java revolution, which started more than a decade ago, gains even more momentum with today's announcement of JavaFX, a new Java innovation targeted at the billions of consumer devices and computers powered by Java technology. JavaFX is a new family of Java technology-based products that will help content providers create and deploy rich Internet applications (RIA). Available today are the first two JavaFX releases: JavaFX Script and JavaFX Mobile.
A new scripting language, JavaFX Script gives Java developers the power to quickly create content-rich applications for the widest variety of clients, including mobile devices, set-top boxes, desktops, even Blu-ray discs. Content creators now have a simple way to develop content for any Java Powered consumer device.
JavaFX Mobile is a complete software system for mobile devices. It is available via OEM licenses to carriers, handset manufacturers, and other companies that
want to simplify and accelerate the development of a powerful standardized software system that can be leveraged across a wide range of consumer devices. In
JavaFX allows content creators to create rich media content without relying on developers, including drag and drop of desktop and mobile content to the desktop, something that is not possible in any other RIA. JavaFX Script offers a close integration with other Java components (applications and infrastructure) running on server and client platforms, enabling a rich end-to-end experience for developers and users.
JavaFX Script takes advantage of the Java security model so consumers can securely access assets (e.g., pictures, music files, word documents) on their desktop
JFugue - Music Notepad!
All that the user interface does is enable the user to generate JFugue music strings, without needing to understand what they are, how they work, or what
they're for. For example, when a quarter note is dragged to the "E" line in the clef register of the music sheet, a string consisting of "E5q" is generated
in the Editor (right side of the screen, below the Palette). The JFugue API knows what to do with this string and, when File > Play is selected, the JFugue API plays the note. When File > Save is selected, the complete content of the Editor, which contains all the JFugue music strings in the order in which they were added, is played and then saved as a MIDI file. When a new instrument is selected, a related string is added to the editor, and all subsequent notes are played by the last selected instrument.
A screenshot of the user interface: (more screenshots are available by clicking on the item "Documents & files", in the navigator on the left side)
The Pitfalls of Inheritance
Inheritance Defined…
One of the first questions that we should answer is what do we mean by inheritance. The inheritance is a modelling technique of expressing the relationship between a generalized type and a specialized type. This in essence is a way of expressing IS A relationship. For example, we can say Car IS A Vehicle. In such situations, we will say Car inherits from Vehicle. In the world of Java language, this inheritance relationship is expressed with the following semantics.
class Car extends Vehicle {
In this model, Car is a subclass of the Vehicle super class. Now the next question is what we inherit. By default, the subclass inherits all the interfaces and the implementations from the super class. Note that, the use of the word "interface" in this context does not refer to the interface type specific to the Java language. In OO, the "interface" is a function/method that a particular class exposes to the external world. Coming specific to Java, the inheritance relationship guarantees the following:
*The sub class inherits all the public methods and the implementation in the super class.
*The sub class inherits all the protected methods and their implementation in the super class.
*The sub class also inherits all the public and protected member variables from the super class.
*However, constructors are not part of this inheritance model. We shall also see later the invocation relationship of constructors that exists between a sub class and its immediate super
These consequences of inheritance also imply the following things that are vital to how we can use a super class and any sub class of it. In general, when you model and implement an inheritance relationship, you guarantee the following:
*The sub class is capable of accepting all the messages that the super class accepts.
*The sub class can replace the super class anywhere the super class is called for without
affecting the final outcome.
Modifying the Super Class Behavior…
With inheritance mechanism, although the sub class by default inherits all the interfaces and implementations of the super class, it is possible to override any of the implementations in the sub class. It is also perfectly possible to extend the interfaces by adding new methods to the sub class. Both of these are mechanisms to modify or extend the functionality of the super class. For example, consider the following inheritance scenario in Listing 1. public class Vehicle
public void stop()
//stop the engine
public void accelarate()
public class Car extends Vehicle
public Car()
public void stop()
//stop the engine
//lock the steering wheel
public void switchOnWiper()
Listing 1: The Vehicle-Car interface inheritance
In this example, we have modelled Car IS A Vehicle. The Car class overrides the stop() method implementation of its super class Vehicle. However, it decides to reuse the accelarate() implementation from its super class.
As a result of this inheritance relationship, we will be able to write a VehicleTester class in the following form.
public class VehicleTester
public void testVehicle(Vehicle vechicle)
//test the accelarate behaviour
//test the stop behaviour
Listing 2. The example benefits of using inheritance relationship
In this example, you can immediately see the benefits of inheritance relationship. We could write a single method accepting a super class type and we are able to pass any sub class to the same method. This greatly reduces the strongly typed nature of code and increases the flexibility of the application module.
Restricting inheritance…
Sometimes in your design you would like to stop some classes and methods being inherited. The final keyword in Java achieves this functionality. When you declare a class to be final, no other sub class of it can be created. Similarly, when you declare a method to be final, no sub class can override that method.
Overriding member variables…
So far we have talked about how can you override the methods declared in the super class. It is also possible to hide the member variables declared in the super class, by declaring a member variable in the sub class with the same name as in super class. The type of the field does not matter, only the name needs to match. Notice that when you hide a member variable in the sub class, you can still access the super class variable by using the super keyword. This means that the member variables cannot be overridden but can only be hidden. It is important to notice this subtle distinction between overriding and hiding.
The logic behind that Java allows the hiding of member variables, is that you can then create a sub class of any super class without detailed knowledge of its internal implementation. This is more in the line of encapsulation.
How it works…
We have just seen how powerful inheritance mechanism is and how relatively it is to implement in real world. We will later in this article examine some of the pitfalls with this inheritance mechanism but for the time being, let us see how the inheritance works in Java.
Object Initialization and Inheritance
When an object is initialized, all the instance variables defined within the class of that object and also all the instance variables defined in its super class get initialized. Consider the following example in Listing 3.
public class Vehicle
private String registration;
public void accelarate()
public void stop()
//stop the engine
public class Car extends Vehicle
private String model;
public Car()
public void stop()
//stop the engine
//lock the steering wheel
public void switchOnWiper()
Listing 3 A Simple inheritance model
Following this example, we would do the following to create an instance of the Car object: //create a new instance of the Car object
Car car = new Car();
In this, the instance variable of the Car class named model and also the instance variable registration of the super class Vehicle both will get initialized to their default values. By default, the Java Virtual Machine will allocate enough space for all the instance variables of the Object's own class and all the instance variable in all its super classes. Do not forget that in Java you can have multi-level inheritance, that is a Car IS A Automobile IS A Vehicle. In such cases, the same initialization mechanism will be followed. The initialization chain finally leads to the java.lang.Object class as all the classes in Java implicitly inherits from the Object class.
The important thing is however the order of initialization. According to Java Language Specification, the initialization starts with super class fields and end with the fields declared in the Object's own class. Thus, in our previous example, the order of initialization will be:
1) All variables in the Object class. (No fields declared)
2) All variables in the Vehicle class. (field registration).
3) All variables in the Car class (field model).
The logic behind this order of initialization is to ensure that you can use a super class variable within a sub class initialization properly.
The Initialization Mechanism…
In Java, the initialization of objects can be done in two ways:
* The static initialization blocks
* The constructor
The static initialization block is invoked only when the Class Loader in Java loads the class. The constructor is not invoked unless you explicitly invoke them in order to initialize an instance of an Object.
In Java the first thing that a constructor does is to invoke another constructor in the super class. In order to fully understand this, I would try to iterate the mechanism in the following points to note.
* In Java if no constructor is explicitly defined for a class, the compiler provides a default no-argument constructor. However, if you explicitly specify a public constructor, compiler will not place any default constructor.
* When the constructor of the sub class is invoked, at first the compiler will invoke the default constructor in the super class recursively up in the tree.
* The super class's constructor can also be invoked explicitly by using the super() key word.
From within a constructor, you are free to call a super class constructor with any number of arguments. It does not have to be the default constructor only.
* It is important however to note that the order of constructor invocation starts from the Object's class and proceeds recursively up in the tree. However, if you remember that the order of instance variable initialization proceeds from the base class down to the Object's class. (Figure 1).
* The previous point coincides with the fact that eventually before a constructor of the Object's class has finished its job, a constructor of the super class is always called, which will initialize the super class fields.
Figure 1: The Constructor invocation and Object initialisation order
Now that we understand how the inheritance in Java really happens behind the scene, it is time to think more about the implications. At first sight, inheritance is an attractive mechanism. But on second thoughts, we will reveal some of the problems that might arise with the user of inheritance.
The Problem Begins…
The above examples were easy to understand in terms of modelling and coding. What is difficult is how all this magic happens behind the scenes. In fact, we have seen a lot more of what goes on behind the scene than we would think normal. Now, we will probe into the depth of the black magic and who knows we might get scared and leave the stage of inheritance magic all together.
Problem 1
Let us return to our example, and now we come up with something like the following in Listing 4.
public class Vehicle
private String registration;
private Vechile(){ }
public void accelarate()
public void stop()
//stop the engine
public class Car extends Vehicle
private String model;
public Car()
public void stop()
//stop the engine
//lock the steering wheel
public void switchOnWiper()
Listing 4. New version of the Vehicle-Car relationship implementation
Nothing has changed except we have added two member variables to both the classes and added constructors for the classes. However, the problem begins now that the code does not compile any more!
Lesson 1
The super class in an inheritance relationship cannot have a private constructor. The argument here is that the private constructor stops us from directly instantiating any object of that class. If we really don't want anyone to create a new object of any class, it cannot possibly be used to represent any Object in an IS-A relationship.
The exceptions to this rule are however the abstract classes and classes that prefer to provide a factory method to obtain instances of that class. The abstract classes are never intended to be initialized as they are abstracts and the compiler will never allow you to do so.
On the other hand, some developers are fanatic about providing factory method as opposed to constructors as means to instantiate objects. It is like providing a static method such as getInstance() as we are used to in implementing "Singleton pattern". The argument here is that you can always change the mechanism of creating instances of that class without affecting the clients of that class.
Problem 2
Now we correct the previous problem and just remove the private constructor; after all it was just a do nothing constructor. But we decide to add another method stop() in the Car class, which returns a boolean if the Car has stopped. Here is code in Listing 5. public class Vehicle
private String registration;
public void accelarate()
public void stop()
//stop the engine
public class Car extends Vehicle
private String model;
public Car()
//The new method//
public boolean stop()
//stop the engine
//lock the steering wheel
public void switchOnWiper()
Listing 5: Another version of the Vehicle-Car relationship
This class will also not compile. The problem is that the super class already has a method with the same name(stop) but different return type (void).
Lesson 2
The sub class cannot declare a method with the same name of an already existing method in the super class with a different return type. The sub class can however declare a method with the same signature as in super class. We call this "Overriding".
This is called a "fragile base class" problem. The base class is fragile because before you can extend it, you may require the full knowledge of all its sub classes. Otherwise, you might end up in a situation where you add a method with the same signature as in one of the base classes and
the application no longer compiles!
The finale…
You might think that the problems so far described are not really problems as being a Java developer; you would probably know all of it, but it is important to notice that all these, point to a bigger picture and a deeper problem. The problem is that you cannot always trust the inheritance relationship.
* It is too restrictive in the way you have to make the super class available to the sub classes. For example, the presence of a public constructor is a must.
* Both the super class and sub classes need the knowledge of each other before adding any other methods to them. This is fragile in terms of flexibility of design.
* The inheritance in one way violates the principle of encapsulation as sub classes can potentially have access to all data and methods of the super class. However, you can restrict visibility by properly using the access modifiers available in Java.
* The fact that a sub class by default inherits all the implementation and interfaces of the super class makes the constituting API more prone to misuse.
In this article, we have seen the inside of inheritance mechanism in Java and how it works. We have understood some of the problems related to inheritance. A section of the problem arises from the misuse of the inheritance relationship and some are inherent in the inheritance concept itself.
However, as designers and developers we would like to find an alternative. But is there one? There can be arguments both ways. However, to keep the scope of this article simpler, I will just only point to another technique called Composition where one object contains reference to another object. I will present a detailed analysis of Composition and Inheritance in the next article. Until then make sure you understand all that we talked about Inheritance.
Java HotSpot VM Options
Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows, Solaris and Linux. This document deals exclusively with non-standard options recognized by the Java HotSpot VM:
Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK.
Options that are specified with -XX are not stable and are not recommended for casual use. These options are subject to change without notice.
Some Useful -XX Options
Default values are listed for Java SE 6 for Solaris Sparc with -server. Some options may vary per architecture/OS/JVM version. Platforms with a differing default value are listed in the description.
Boolean options are turned on with -XX:+
Google Gulp!
At Google our mission is to organize the world's information and make it useful and accessible to our users. But any piece of information's usefulness derives, to a depressing degree, from the cognitive ability of the user who's using it.
That's why we're pleased to announce Google Gulp (BETA)™ with Auto-Drink™ (LIMITED RELEASE), a line of "smart drinks" designed to maximize your surfing efficiency by making you more intelligent, and less thirsty.
Think fruity. Think refreshing.
Think a DNA scanner embedded in the lip of your bottle reading all 3 gigabytes of your base pair genetic data in a fraction of a second, fine-tuning your individual hormonal cocktail in real time using our patented Auto-Drink™ technology, and slamming a truckload of electrolytic neurotransmitter smart-drug stimulants past the blood-brain barrier to achieve maximum optimization of your soon-to-be-grateful cerebral cortex. Plus, it's low in carbs! And with flavors ranging from Beta Carroty
to Glutamate Grape, you'll never run out of ways to quench your thirst for knowledge.
Google Gulp FaQ!
Unique Package Name...?
Since the Internet domain names are unigue you should follow this agreement. Do not use the package name that already match some domain
name that you are not owner of. Find free name and register it. You can find cheap registration now on Internet, ~$10/year!
Good, short and clear explanation I found in Java tutorial on SUN's site:
"The API for the Thread class includes a method called isAlive. The isAlive method returns true if the thread has been started and not stopped. If the isAlive method returns false, you know that the thread either is a New Thread or is Dead. If the isAlive method returns true, you know that the thread is either Runnable or Not Runnable. You cannot differentiate between a New Thread or a Dead thread. Nor can you differentiate between a Runnable thread and a Not Runnable thread."
Why do we need it...? watz the use...? Read on...
1. Make faster integer division/multiplication operations:
4839534 * 4
can be done like this:
4839534 << 2
543894 / 2
can be done like this:
543894 >> 1
Shift operations much more faster than multiplication for most of processors.
2. Reassembling byte streams to int values
3. For accelerating operations with graphics since Red, Green and Blue colors coded by separate bytes.
4. Packing small numbers into one single long...
Which4J can be run in command-line mode to search your system classpath for all occurrences of the specified classname. More importantly, it can also be used programmatically to search a particular ClassLoader for the first occurrence of the specified classname or Class instance. This can be extremely valuable when trying to debug problems in web containers and application servers that have sophisticated ClassLoader hierarchies.
The following snippet of code shows how simple it is to figure out where a particular classloader is loading a particular class from:
System.out.println(org.theshoemakers.which4j.Which4J.which( java.lang.String.class ) );
And here is the output:
Download which4J
404 - Error Page...
if no read on...
We understand what 404 means: Page Not Found. But the average internet user has no idea what 404 means or what to do about it. To them, it's yet another unintelligible error message from the computer. Most 404 pages are unvarnished geek-speak.
One of the best error pages I've ever seen is/was from Dunstan's 1976 Design blog . I think it hits most of your points for a good error page, although it doesn't automatically search and it doesn't automatically send an error report (although it comes awfully close with a simple "submit quick error report" that requires no forms to fill out).
Tiger Provided option for getting various Thread States
NEW A Fresh thread that has not yet started to execute.
RUNNABLE A thread that is executing in the Java virtual machine.
BLOCKED A thread that is blocked waiting for a monitor lock.
WAITING A thread that is wating to be notified by another thread.
TIMED_WAITING A thread that is wating to be notified by another thread for a specific amount of time
TERMINATED A thread whos run method has ended.
The folowing code prints out all thread states.
public class ThreadStates{
public static void main(String[] args){
Thread t = new Thread();
Thread.State e = t.getState();
Thread.State[] ts = e.values();
for(int i = 0; i < ts.length; i++){
JPC Project
JPC is a pure Java emulation of an x86 PC with fully virtual peripherals. It runs anywhere you have a JVM, whether x86, RISC, mobile phone, set-top box, possibly even your refrigerator! All this, with the bulletproof security and stability of Java technology.
JPC creates a virtual machine upon which you can install your favourite operating system in a safe, flexible and powerful way. It aims to give you complete control over your favorite PC software's execution environment, whatever your real hardware or operating system, and JPC's multilayered security makes it the safest solution for running the most dangerous software in quarantine - ideal for archiving viruses, hosting honeypots, and protecting your machine from malicious or unstable software.
JPC has been developed since August 2005 in Oxford University's Subdepartment of Particle Physics. It can be run on a number of devices, from PC's to mobile phones, and you can see some of the results of JPC in action (more soon!). Some might see JPC as part of a nefarious plot by mad scientists who want to harness every last CPU in the world for their research - but we prefer to see JPC as Java-hardened protection against their buggy programs.
Faster Deep Copies of Java Objects ( Shallow Copy and Deep Copy )
Faster Deep Copies of Java Objects
java.lang.Object root superclass defines a
clone() method that will, assuming the subclass implements the
java.lang.Cloneable interface, return a copy of the object. While Java classes are free to override this method to do more complex kinds of cloning, the default behavior of
clone() is to return a shallow copy of the object. This means that the values of all of the origical object's fields are copied to the fields of the new object.
A property of shallow copies is that fields that refer to other objects will point to the same objects in both the original and the clone. For fields that contain primitive or immutable values (
float, etc…), there is little chance of this causing problems. For mutable objects, however, cloning can lead to unexpected results. Figure 1 shows an example.
import java.util.Vector;
public class Example1 {
public static void main(String[] args) {
// Make a Vector
Vector original = new Vector();
// Make a StringBuffer and add it to the Vector
StringBuffer text = new StringBuffer("The quick brown fox");
// Clone the vector and print out the contents
Vector clone = (Vector) original.clone();
System.out.println("A. After cloning");
printVectorContents(original, "original");
printVectorContents(clone, "clone");
// Add another object (an Integer) to the clone and
// print out the contents
clone.addElement(new Integer(5));
System.out.println("B. After adding an Integer to the clone");
printVectorContents(original, "original");
printVectorContents(clone, "clone");
// Change the StringBuffer contents
text.append(" jumps over the lazy dog.");
System.out.println("C. After modifying one of original's elements");
printVectorContents(original, "original");
printVectorContents(clone, "clone");
public static void printVectorContents(Vector v, String name) {
System.out.println(" Contents of \"" + name + "\":");
// For each element in the vector, print out the index, the
// class of the element, and the element itself
for (int i = 0; i < v.size(); i++) {
Object element = v.elementAt(i);
System.out.println(" " + i + " (" +
element.getClass().getName() + "): " +
Vector contents after cloning
In this example we create a
Vector and add a
StringBuffer to it. Note that
StringBuffer (unlike, for example,
String is mutable — it's contents can be changed after creation. Figure 2 shows the output of the example in Figure 1.
> java Example1
A. After cloning
Contents of "original":
0 (java.lang.StringBuffer): The quick brown fox
Contents of "clone":
0 (java.lang.StringBuffer): The quick brown fox
B. After adding an Integer to the clone
Contents of "original":
0 (java.lang.StringBuffer): The quick brown fox
Contents of "clone":
0 (java.lang.StringBuffer): The quick brown fox
1 (java.lang.Integer): 5
C. After modifying one of original's elements
Contents of "original":
0 (java.lang.StringBuffer): The quick brown fox jumps over the lazy dog.
Contents of "clone":
0 (java.lang.StringBuffer): The quick brown fox jumps over the lazy dog.
1 (java.lang.Integer): 5
In the first block of output ("A"), we see that the clone operation was successful: The original vector and the clone have the same size (1), content types, and values. The second block of output ("B") shows that the original vector and its clone are distinct objects. If we add another element to the clone, it only appears in the clone, and not in the original. The third block of output ("C") is, however, a little trickier. Modifying the
StringBuffer that was added to the original vector has changed the value of the first element of both the original vector and its clone. The explanation for this lies in the fact that
clone made a shallow copy of the vector, so both vectors now point to the exact same
StringBuffer instance.
This is, of course, sometimes exactly the behavior that you need. In other cases, however, it can lead to frustrating and inexplicable errors, as the state of an object seems to change "behind your back".
The solution to this problem is to make a deep copy of the object. A deep copy makes a distinct copy of each of the object's fields, recursing through the entire graph of other objects referenced by the object being copied. The Java API provides no deep-copy equivalent to
Object.clone(). One solution is to simply implement your own custom method (e.g.,
deepCopy()) that returns a deep copy of an instance of one of your classes. This may be the best solution if you need a complex mixture of deep and shallow copies for different fields, but has a few significant drawbacks:
- You must be able to modify the class (i.e., have the source code) or implement a subclass. If you have a third-party class for which you do not have the source and which is marked
final, you are out of luck.
- You must be able to access all of the fields of the class's superclasses. If significant parts of the object's state are contained in
privatefields of a superclass, you will not be able to access them.
- You must have a way to make copies of instances of all of the other kinds of objects that the object references. This is particularly problematic if the exact classes of referenced objects cannot be known until runtime.
- Custom deep copy methods are tedious to implement, easy to get wrong, and difficult to maintain. The method must be revisited any time a change is made to the class or to any of its superclasses.
A common solution to the deep copy problem is to use Java Object Serialization (JOS). The idea is simple: Write the object to an array using JOS's
ObjectOutputStream and then use
ObjectInputStream to reconsistute a copy of the object. The result will be a completely distinct object, with completely distinct referenced objects. JOS takes care of all of the details: superclass fields, following object graphs, and handling repeated references to the same object within the graph. Figure 3 shows a first draft of a utility class that uses JOS for making deep copies.
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
* Utility for making deep copies (vs. clone()'s shallow copies) of
* objects. Objects are first serialized and then deserialized. Error
* checking is fairly minimal in this implementation. If an object is
* encountered that cannot be serialized (or that references an object
* that cannot be serialized) an error is printed to System.err and
* null is returned. Depending on your specific application, it might
* make more sense to have copy(…) re-throw the exception.
* A later version of this class includes some minor optimizations.
public class UnoptimizedDeepCopy {
* Returns a copy of the object, or null if the object cannot
* be serialized.
public static Object copy(Object orig) {
Object obj = null;
try {
// Write the object out to a byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
// Make an input stream from the byte array and read
// a copy of the object back in.
ObjectInputStream in = new ObjectInputStream(
new ByteArrayInputStream(bos.toByteArray()));
obj = in.readObject();
catch(IOException e) {
catch(ClassNotFoundException cnfe) {
return obj;
Unfortunately, this approach has some problems, too:
- It will only work when the object being copied, as well as all of the other objects references directly or indirectly by the object, are serializable. (In other words, they must implement
java.io.Serializable.) Fortunately it is often sufficient to simply declare that a given class
implements java.io.Serializableand let Java's default serialization mechanisms do their thing.
- Java Object Serialization is slow, and using it to make a deep copy requires both serializing and deserializing. There are ways to speed it up (e.g., by pre-computing serial version ids and defining custom
writeObject()methods), but this will usually be the primary bottleneck.
- The byte array stream implementations included in the
java.iopackage are designed to be general enough to perform reasonable well for data of different sizes and to be safe to use in a multi-threaded environment. These characteristics, however, slow down
ByteArrayOutputStreamand (to a lesser extent)
The first two of these problems cannot be addressed in a general way. We can, however, use alternative implementations of
ByteArrayOutputStream and
ByteArrayInputStream that makes three simple optimizations:
ByteArrayOutputStream, by default, begins with a 32 byte array for the output. As content is written to the stream, the required size of the content is computed and (if necessary), the array is expanded to the greater of the required size or twice the current size. JOS produces output that is somewhat bloated (for example, fully qualifies path names are included in uncompressed string form), so the 32 byte default starting size means that lots of small arrays are created, copied into, and thrown away as data is written. This has an easy fix: construct the array with a larger inital size.
- All of the methods of
ByteArrayOutputStreamthat modify the contents of the byte array are
synchronized. In general this is a good idea, but in this case we can be certain that only a single thread will ever be accessing the stream. Removing the synchronization will speed things up a little.
ByteArrayInputStream's methods are also synchronized.
- The
toByteArray()method creates and returns a copy of the stream's byte array. Again, this is usually a good idea: If you retrieve the byte array and then continue writing to the stream, the retrieved byte array should not change. For this case, however, creating another byte array and copying into it merely wastes cycles and makes extra work for the garbage collector.
An optimized implementation of
ByteArrayOutputStream is shown in Figure 4.
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
* ByteArrayOutputStream implementation that doesn't synchronize methods
* and doesn't copy the data on toByteArray().
public class FastByteArrayOutputStream extends OutputStream {
* Buffer and size
protected byte[] buf = null;
protected int size = 0;
* Constructs a stream with buffer capacity size 5K
public FastByteArrayOutputStream() {
this(5 * 1024);
* Constructs a stream with the given initial size
public FastByteArrayOutputStream(int initSize) {
this.size = 0;
this.buf = new byte[initSize];
* Ensures that we have a large enough buffer for the given size.
private void verifyBufferSize(int sz) {
if (sz > buf.length) {
byte[] old = buf;
buf = new byte[Math.max(sz, 2 * buf.length )];
System.arraycopy(old, 0, buf, 0, old.length);
old = null;
public int getSize() {
return size;
* Returns the byte array containing the written data. Note that this
* array will almost always be larger than the amount of data actually
* written.
public byte[] getByteArray() {
return buf;
public final void write(byte b[]) {
verifyBufferSize(size + b.length);
System.arraycopy(b, 0, buf, size, b.length);
size += b.length;
public final void write(byte b[], int off, int len) {
verifyBufferSize(size + len);
System.arraycopy(b, off, buf, size, len);
size += len;
public final void write(int b) {
verifyBufferSize(size + 1);
buf[size++] = (byte) b;
public void reset() {
size = 0;
* Returns a ByteArrayInputStream for reading back the written data
public InputStream getInputStream() {
return new FastByteArrayInputStream(buf, size);
getInputStream() method returns an instance of an optimized version of
ByteArrayInputStream that has unsychronized methods. The implementation of
FastByteArrayInputStream is shown in Figure 5.
import java.io.InputStream;
import java.io.IOException;
* ByteArrayInputStream implementation that does not synchronize methods.
public class FastByteArrayInputStream extends InputStream {
* Our byte buffer
protected byte[] buf = null;
* Number of bytes that we can read from the buffer
protected int count = 0;
* Number of bytes that have been read from the buffer
protected int pos = 0;
public FastByteArrayInputStream(byte[] buf, int count) {
this.buf = buf;
this.count = count;
public final int available() {
return count - pos;
public final int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
public final int read(byte[] b, int off, int len) {
if (pos >= count)
return -1;
if ((pos + len) > count)
len = (count - pos);
System.arraycopy(buf, pos, b, off, len);
pos += len;
return len;
public final long skip(long n) {
if ((pos + n) > count)
n = count - pos;
if (n < 0)
return 0;
pos += n;
return n;
Figure 6 shows a version of a deep copy utility that uses these classes:
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
* Utility for making deep copies (vs. clone()'s shallow copies) of
* objects. Objects are first serialized and then deserialized. Error
* checking is fairly minimal in this implementation. If an object is
* encountered that cannot be serialized (or that references an object
* that cannot be serialized) an error is printed to System.err and
* null is returned. Depending on your specific application, it might
* make more sense to have copy(…) re-throw the exception.
public class DeepCopy {
* Returns a copy of the object, or null if the object cannot
* be serialized.
public static Object copy(Object orig) {
Object obj = null;
try {
// Write the object out to a byte array
FastByteArrayOutputStream fbos =
new FastByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(fbos);
// Retrieve an input stream from the byte array and read
// a copy of the object back in.
ObjectInputStream in =
new ObjectInputStream(fbos.getInputStream());
obj = in.readObject();
catch(IOException e) {
catch(ClassNotFoundException cnfe) {
return obj;
The extent of the speed boost will depend on a number of factors in your specific application (more on this later), but the simple class shown in Figure 7 tests the optimized and unoptimized versions of the deep copy utility by repeatedly copying a large object.
import java.util.Hashtable;
import java.util.Vector;
import java.util.Date;
public class SpeedTest {
public static void main(String[] args) {
// Make a reasonable large test object. Note that this doesn't
// do anything useful — it is simply intended to be large, have
// several levels of references, and be somewhat random. We start
// with a hashtable and add vectors to it, where each element in
// the vector is a Date object (initialized to the current time),
// a semi-random string, and a (circular) reference back to the
// object itself. In this case the resulting object produces
// a serialized representation that is approximate 700K.
Hashtable obj = new Hashtable();
for (int i = 0; i < 100; i++) {
Vector v = new Vector();
for (int j = 0; j < 100; j++) {
v.addElement(new Object[] {
new Date(),
"A random number: " + Math.random(),
obj.put(new Integer(i), v);
int iterations = 10;
// Make copies of the object using the unoptimized version
// of the deep copy utility.
long unoptimizedTime = 0L;
for (int i = 0; i < iterations; i++) {
long start = System.currentTimeMillis();
Object copy = UnoptimizedDeepCopy.copy(obj);
unoptimizedTime += (System.currentTimeMillis() - start);
// Avoid having GC run while we are timing...
copy = null;
// Repeat with the optimized version
long optimizedTime = 0L;
for (int i = 0; i < iterations; i++) {
long start = System.currentTimeMillis();
Object copy = DeepCopy.copy(obj);
optimizedTime += (System.currentTimeMillis() - start);
// Avoid having GC run while we are timing...
copy = null;
System.out.println("Unoptimized time: " + unoptimizedTime);
System.out.println(" Optimized time: " + optimizedTime);
A few notes about this test:
- The object that we are copying is large. While somewhat random, it will generally have a serialized size of around 700 Kbytes.
- The most significant speed boost comes from avoid extra copying of data in
FastByteArrayOutputStream. This has several implications:
- Using the unsynchronized
FastByteArrayInputStreamspeeds things up a little, but the standard
java.io.ByteArrayInputStreamis nearly as fast.
- Performance is mildly sensitive to the initial buffer size in
FastByteArrayOutputStream, but is much more sensitive to the rate at which the buffer grows. If the objects you are copying tend to be of similar size, copying will be much faster if you initialize the buffer size and tweak the rate of growth.
- Using the unsynchronized
- Measuring speed using elapsed time between two calls to
System.currentTimeMillis()is problematic, but for single-threaded applications and testing relatively slow operations it is sufficient. A number of commercial tools (such as JProfiler) will give more accurate per-method timing data.
- Testing code in a loop is also problematic, since the first few iterations will be slower until HotSpot decides to compile the code. Testing larger numbers of iterations aleviates this problems.
- Garbage collection further complicates matters, particularly in cases where lots of memory is allocated. In this example, we manually invoke the garbage collector after each copy to try to keep it from running while a copy is in progress.
These caveats aside, the performance difference is sigificant. For example, the code as shown in Figure 7 (on a 500Mhz G3 Macintosh iBook running OSX 10.3 and Java 1.4.1) reveals that the unoptimized version requires about 1.8 seconds per copy, while the optimized version only requires about 1.3 seconds. Whether or not this difference is signficant will, of course, depend on the frequency with which your application does deep copies and the size of the objects being copied.
Comparing Arrays, Lists, and Maps
For example: if we know there will be 10 objects that we need to store and iterated every time. Given the fancy of API we normally tend to use ArrayList / Vector irrespective of thinking of Array which is more powerful and very good implementation for known size.
There are several other parameters we might need to understand as developers which implementation that we need to choose based on the requirements. Some of them could be
1. Insert elements at the end of a list
2. Insert elements in the beginning of a list
3. Insert elements at random positions in a list
4. Access elements from the first to the last
5. Access elements from the last to the first
6. Access elements in random order
7. Update elements in random order
Here is an excellent article that explains the collection on a case to case basis
XML as database
try {
//Load the DB2 JDBC Type 2 Driver with DriverManager
}catch (ClassNotFoundException e) {
Getting connection:
connection = DriverManager.getConnection(url, user, pass);
the prepare statement:PreparedStatement stmt = connection.prepareStatement(sql);
Result Set:
option 1:ResultSet resultSet = stmt.executeQuery();
option 2:InputStream inputStream = resultSet.getBinaryStream(1);
option 3:DB2Xml db2xml = (DB2Xml) resultSet.getObject(1);
Selecting a XML value:String sql = "SELECT PID, DESCRIPTION from XMLPRODUCT where PID = ?";
PreparedStatement stmt = connection.prepareStatement(sql);stmt.setString(1, "100-105-09");
ResultSet resultSet = stmt.executeQuery();
String xml = resultSet.getString("DESCRIPTION"); // orInputStream inputStream = resultSet.getBinaryStream("DESCRIPTION"); // orReader reader = resultSet.getCharacterStream("DESCRIPTION"); // orDB2Xml db2xml = (DB2Xml) resultSet.getObject("DESCRIPTION");
you can use other methods available in java too..!
getString( )
getBinaryStream( )
getCharacterStrem( )
getObject( )
Inserting in XML file:
String sql = "INSERT INTO xmlproduct VALUES(?, ?)";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, "100-105-09");
File binFile = new File("productBinIn.xml");
InputStream inBin = new FileInputStream(xmlFile);
stmt.setBinaryStream(2, inBin, (int) binFile.getLength());stmt.execute();
XML database driver
DWR - Easy AJAX for JAVA
It allows code in a browser to use Java functions running on a web server just as if it was in the browser.
DWR consists of two main parts:
Java is fundamentally synchronous where Ajax is asynchronous. So when you call a remote method, you provide DWR with a callback function to be called when the data has been returned from the network.
The diagram shows how DWR can alter the contents of a selection list as a result of some Javascript event like onclick.
DWR dynamically generates an AjaxService class in Javascript to match some server-side code. This is called by the eventHandler. DWR then handles all the remoting details, including converting all the parameters and return values between Javascript and Java. It then executes the supplied callback function (populateList) in the example below which uses a DWR utility function to alter the web page.
Generics FAQ
Generics FAQ
Tomcat Vs OC4J
Tomcat (Xerces): doc.getElementsByTagName("SOAP-ENV:Envelope") is valid. It treats the namespace as if it were just part of the tag name.
OC4J (oraclexmlparserv2): doc.getElementsByTagName("SOAP-ENV:Envelope") is not valid
Solution: Use doc.getElementsByTagNameNS(). To use this method, you must make sure to call setNamespaceAware(true) on your DocumentBuilderFactory.
Tomcat (Xerces): Defaults to false
OC4J (oraclexmlparserv2): Defaults to true (which contradicts the documentation http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#setNamespaceAware(boolean))
Tomcat: Always Throws ClassNotFoundException if the class isn't found
OC4J: Throws NoClassDefFoundError in some situations if the class isn't found
Are generics fully functional...?
Vector <String>strObject = new Vector <String>();
Now adding an int or any other type of object into this collection would throw a compile time error, which sounds good...!
//strObject.add(12) -- Compilation error
On the other hand,
Vector newVector = strObject;
This doesn't throw any compilation errors rather, you see a warning to recompile with -Xlint, which many a times we ignore....!
What does this mean to Gosling's tool..?
It's used when deSerializing an object, to determine whether that object is compatible with that object's class file in the JVM doing the deserialization. If the serialVersionUID of the class file doesn't match the serialVersionUID of the deserialized object, you'll get an InvalidClassException. If the class file doesn't explicitly declare a serialVersionUID, then the serialization runtime has to compute it, which is a relatively expensive process.
So what makes the Object that was serialized and its class incompatible?
1. Deleting fields from the class
2. Changing the type of a field
3. Changing a class from Serializable to Externalizable or vice versa
Keep the Pandoras box closed by adding a serialVersionUID to the class file.
Firefox killer Application - All Peer
It's a simple peer-to-peer file-sharing app. Set it up, select files you want to share, and who you want to share them with, and the person gets a notification. He can then grab them. It's that simple.
For the moment, AllPeers runs only under Firefox, but expect it to work with Internet Explorer some time in the future. If you've ever had a problem with sending a file via email, it's worth a look..!
Singleton Pattern
A singleton pattern can be used to create a Connection Pool. We can have connection object as singleton to avoid wastage of
Steps to create a singleton pattern,
- We need to have default constructor of the class as private, which prevents instantiation of the object by other classes.
- Define a static method that returns singleton object, If object doesn't exists new object is returned otherwise existing
object would be returned.
- To avoid the object being cloned, override the clone method of the Object class.
- If a application is going to be Multithreaded one then there can be chances wherein two therads at the sametime can access the static method which may create more than one instance of the singleton class. To avoid the above scenario we need to have this static method as synchronized.
class Singleton {
private static Singleton singletonObject;
private Singleton{
public static synchronized Singleton getInstance(){
if (singletonObject == null){
singletonObject = new Singleton();
return singletonObject;
public Object clone()throws CloneNotSupportedException{
throw new CloneNotSupportedException();
public class SingletonObjectDemo{
public static void main(String args[]){
//Singleton obj = new Singleton(); Would cause Compilation error.
//create the Singleton Object..
Singleton obj = Singleton.getInstance();
NoClassDefFoundError Vs ClassNotFoundException
I always wonder, why Java is not intelligent enough to fix problems in the code when it knows something goes wrong; rather than throwing just exceptions? May be Gosling wants it that way, saving donuts for him!
Now read on...
1 public class A{
3 public static void main(String []s) throws classNotFoundException{
4 B obj = new B();
5 // class.forName("B).newInstance()
6 }
8 }
1 public class B{
2 }
javac A.java
java A
This would throw a NoClassDefFoundError. Comment out line 4 and uncomment line 5. Now it would throw ClassNotFoundException.
ClassNotFoundexception is thrown when an application tries to load in a class through its string name using:
Otherwise NoClassDefFoundError is thrown.
The interesting fact is that, this behaves differently when your application runs in OC4j Oracle application server. i.e. your application would throw a NoClassDefFoundError to ClassNotFoundException.
If you dont want to miss your donut, add two catch blocks in your code...I already missed one..:(
}catch(ClassNotFoundexception e1){
}catch(NoClassDefFoundError e2){
Added on 9/14/2012:
Further I also see of there are issues with class initialization, there could be NoClassDefFoundError.
Once there is an initialization failure, JVM marks the class as bad, and subsequent attempts to use or access the class result in NoClassDefFoundError
Web 2.0 in 5 minutes
Google Maps @ Work..!
Getting started with the Google Maps API is easy. There is nothing to download; you just need to sign up to obtain a key to use the API. There is no charge for publicly accessible sites (for more details, see the Sign up for the Google Maps API page). You need to provide the URL of your website, and, when your application is deployed on a website, your key will only work from this URL. One annoying thing about this constraint is that you need to set up a special key to use for your development or test machines: for the sample code, I had to create a special key for http://localhost:8080/maps, for example.
Once you have a valid key, you can see the Google Maps API in action. Let's start off with something simple: displaying a map on our web page.
The full code listing of our first Google Map is shown here:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Our first Google Map</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=MYKEY"
<script type="text/javascript">
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(-41.5, -185), 5);
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 420px; height: 420px"></div>
The first thing to notice here is the code that fetches the actual JavaScript code from the Google Maps server. You need to supply your key here for the code the work.
<script src="http://maps.google.com/maps?file=api&v=2&key=MYKEY"
Next comes the code that actually downloads the map from the server.
<script type="text/javascript">
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(-41.5, -187.5), 5);
Finally, in the body, we display the map. The size and shape of the map are taken from the corresponding HTML element. The map is initialized when the page is loaded (via the onload event). In addition, when the user leaves the page, the GUnload() method is called (via the onunload event). This cleans up the map data structure in order to avoid memory leak problems that occur in Internet Explorer.
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 420px; height: 420px"></div>
Panning and Zooming
Now that we can successfully display a map, let's try to add some zoom functionality. The Google Maps API lets you add a number of different controls to your map, including panning and zooming tools, a map scale, and a set of buttons letting you change between Map and Satellite views. In our example, we'll add a small pan/zoom control and an "Overview map" control, which places a small, collapsible overview map. You add controls using the addControl() method, as shown here:
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(-41.5, -187.5), 5);
map.addControl(new GSmallMapControl());
map.addControl(new GOverviewMapControl());
Static gets serialized..?
import java.io.*;
public class Ser implements Serializable {
static int var = 9;
void set() {
var = 100;
public class DumpSer {
public static void main(String[] args) throws Exception {
Ser kk = new Ser();
File outFile = new File("out.dmp");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(outFile));
public class LoadSer {
public static void main(String[] args) throws Exception {
File inFile = new File("out.dmp");
ObjectInputStream in = new ObjectInputStream(new FileInputStream(inFile));
Ser jj = (Ser)in.readObject();
System.out.println("Val -> "+jj.var);
After compilation, first execute:
> java DumpSer
Then execute:
> java LoadSer
What do you see?
Reason: Once a class is loaded it remains loaded and all its static fields remain set with any values assign to them. The Thumb rule is Statics's are not serialized but initialized.
Kitchen Sink Language
Enjoy and share the fun of being a part of the Java Compiler Community.
Kitchen Sink Language
Dodo Tales: Finally fischy ','
List initList = Arrays.asList(new Integer[] {
new Integer(1),
new Integer(2),
new Integer(1),
new Integer(2),
Why is this a part of Java Language Specification ..?
Congrats Mr.James Gosling...
James Gosling, a vice-president of Sun Microsystems Inc. of Santa Clara, Calif., has been named an officer of the Order of Canada, the office of the Governor General announced on Monday.
Read on CBC News...
And finally....WoodStock !
The community adds, "The vision of the Project Woodstock is devoted to providing the best possible web application experience for our customers and communities. That experience will certainly be greatly enriched by the interaction of ideas, information, and techniques that emerge from the cooperation of individuals in the web community, and the rapid introduction of new technologies by members of that community".
This is really an interesting and cool stuff. There are lots of new features that we can do with eaze. Follow the link to know more...
An intelligent compiler...?
JANINO can also be used for static code analysis.
Click here to download Janino
Dodo Tales: if(true) Lies...?
if (true);
is considered to be a valid syntax in Java? Why don't the Compiler complain this? what does this line signify?
Free Java Lectures
Looks good to me...
Lets add few more to wat we know...
Messages in System Tray
So you wanna try it..?
Click here to get the code
Javascript made simple..!
Here goes a sample snippet:
Instead of,
for (var index = 0; index < myArray.length; ++index) {
var item = myArray[index];
// Your code working on item here...
You can use iterators, such as each :
myArray.each(function(item) {
// Your code working on item here...
There are many overloaded methods and functions too!
Now what are you waiting for...?
Download Prototype from www.prototypejs.org
Tired of seeing that 500 Bad gateway error while deploying a Springboot application in AWS...?
By default, Spring Boot applications will listen on port 8080. Elastic Beanstalk assumes that the application will listen on port 5000. Th...
What..When...? I always wonder, why Java is not intelligent enough to fix problems in the code when it knows something goes wrong; rather ...
< a href="javascript:someFuntion()" > and < a href="#" onclick="javascript:someFunction()" ...
Let me talk about Concurrent.Thread , a library that allows JavaScript to use multiple threads, since this greatly eases the difficulty asso...


text:
Buying a mattress is complication for people because bulk of them do unknown which mattress is practical for them. There are different layouts, styles and expenditure of mattress that are provided in market. According to the use and wellness of people they could buy any type of among the foam mattresses.
Some people have the problem if they lose out on the sleep in the night they could not rise at morning and they really feel quite migraine and regurgitating. Different people have different sort of problems when they lose out on the night sleep. It is crucial for people to buy the very best mattress, which is fantastic for sleep. Some people have the problem of home is small and they could not have mattress in their room. People that are staying in small spaces and houses could buy the latex mattress that will suitable for small room.
People could seek mattress which profits their resting layouts. Different people have different resting style. One people style is ease for one sort of mattress and various other people resting style advantages various other sort of mattress. People that are living in small home could buy the folded up mattress which they could be fold and maintain apart or maintain it on the shelve when not being used. These folded up mattresses are truly useful for site visitor.
People that have little space could not arrange special room for site visitor and they could deny a different mattress for living room. They could buy the folded up foam mattress for family and they could fold up and safeguard when family had really gone.
There are series of latex mattresses which bestmattress-reviews highlights for the sensible of people. Some people have the method of buy all points for high cost they could buy the memory foam and tempur pedic mattress for high cost. People that are looking mattress for cheaper expense could find the foam mattress.
Mattress that suitable for the site visitors
They could alter it to where they want extra stress. People with discomfort in the back it is wonderful to get tips from the medical professionals to select which type of mattress advantages them. These flexible mattresses could be used as site visitor mattress when anybody worries home instantly and favor to continue to be a day or even more.
Most of people have neck and neck and back pain and they most likely to continue to be for others house it is challenging for them to ask mattress which is functional for them. Flexible mattress will offer convenience them they not have to ask anything from your homeowner if they obtain the flexible mattress. They could use it where they call for even more stress.
The various other type of mattress is the blow-up mattress which is used by pumping the air inside it through digital pump. If site visitor is come suddenly people could establish mattress for the family truly rapidly. They merely want to place the mattress on the flooring and desire to place the air pump and web link it to the electric outlet when the air is total they could quit the air pump.
These mattresses are much easier for the family because they could place the air simply just how much they prefer. If they like the small thickness they could use like that and if they like the larger thickness they could pump the air according to their benefit.


text:
The Instigator
0 Points
The Contender
Pro (for)
0 Points
Calvin and Hobbes vs. Garfield
Post Voting Period
The voting period for this debate has ended.
after 0 votes the winner is...
It's a Tie!
|Voting Style:
|Point System:
|7 Point
|6 years ago
|Post Voting Period
|2,414 times
|Debate No:
Debate Rounds (5)
Comments (1)
Votes (0)
I will be for Garfield and against Calvin and Hobbes.
Pro may go first.
I believe the resolution is: Calvin and Hobbes is better than Garfield.
Lord_Logic/Pro's job: Calvin and Hobbes is better than Garfield.
TheFirst/Con's job: Negate the resolution.
Let me just say straight off the bat that both comics are very well-written and hilarious.
Contention 1
Calvin and Hobbes is more realistic. "Calvin is impulsive, creative, imaginative, energetic, curious, intelligent, hypocritical, selfish, rude, and an ill-tempered six-year-old," ~ {1}. Of course, Calvin is a human being and is the main protagonist along with Hobbes. Garfield, on the other hand, is less realistic. Take for example, page 36 on Garfield Potbelly of Gold. {2}. Odie could never survive a full face slam into the wall that cracked the wall. He appears healthy and without any brain damage one day later. That would never happen to any dog. Calvin and Hobbes revolves around the real world. Such examples are the dad raking, Calvin in a play, etc. Therefore, Calvin and Hobbes is more realistic.
Contention 2
Calvin and Hobbes books are being used for teaching. {1}. Garfield is not. Calvin and Hobbes is thus better because it can be used for teaching. As readers of Calvin and Hobbes state, Calvin and Hobbes is like a psychology book. You must think hard about a comic to understand its meaning.
Contention 3
Calvin and Hobbes is much more imaginative than Garfield. Calvin and Hobbes create Calvinball, which can be played by kids if they want to, G.R.O.S.S, Spaceman Spiff, Tracer Bullet, and Stupendous man. Of course, people at debate.org like UnStupendousMan love Calvin and Hobbes. I have not seen a debate.org account that has a picture of Garfield. {3}.
==> Conclusion
I feel that these three contentions should be enough for Round 1. Because the debate lasts five rounds, I await my opponents response. Go Calvin and Hobbes!.
{1} http://en.wikipedia.org...
{2} Garfield: Potbelly of Gold
{3} http://www.debate.org...
TheFirst forfeited this round.
No problems. Have fun with your family? Congratz on your new piano! Sure, I will skip round three for you. Glad that you came back!
TheFirst forfeited this round.
Lord_Logic forfeited this round.
TheFirst forfeited this round.
Lord_Logic forfeited this round.
1 comment has been posted on this debate.
Posted by Lord_Logic 6 years ago
No votes have been placed for this debate.
You are not eligible to vote on this debate
This debate has been configured to only allow voters who meet the requirements set by the debaters. This debate either has an Elo score requirement or is to be voted on by a select panel of judges.


text:
It's Christmas Eve, it's Christmas Eve! Can you believe it? I'm proud to say that my presents are all wrapped and under the tree! I spent some time yesterday- after a lovely mother/daughter lunch- wrapping presents, while listening to my new favorite podcast, and Rascal "helped."
Our family is one of those families where we have to have an aesthetically pleasing Christmas tree, where all of our wrapping paper "works" together. No weird wrap in our house (well, unless you consider our Christmas kitty wrap 'weird,' but it still sort of works with the others). I like to consider myself a pretty good wrapper, but my mom really takes the cake. I'll post some good pictures of the presents under the tree tomorrow, but for now, here are some of my wrap jobs:
Seriously how cute is that red with gold polka dot wrapping paper?! Its from the adorable Sugar Paper line at Target! After the wrapping-fest, I had dinner with the fam, then met up with some friends. My brother finally arrived home around 11:30 from New York after many delays. It's good to have him back!
As for today, it was full of fun! The whole fam had lunch in downtown KC at The Mixx, a great salad place. Not the most festive of choices, but definitely delicious. Then, we headed to the UMKC campus to see their rendition of A Christmas Carol. Honestly, it was amazing. I saw it was UMKC maybe ten years ago, and then again in middle school after we read the book, but they've definitely changed it! There was some amazing stage work, lighting, and acting of course. Hats off to the cast and crew! If you're able to see it next year, I highly suggest it!
After the show my brother went off to do some last minute Christmas shopping (his, not mine of course) and went to the classic Winstead's downtown. I remembered last year we happened to have it on Christmas Eve as well, so we decided to stop by again for a limeade and a shake- yum. Maybe it will become a tradition?
Tonight will include some pulled pork sandwiches while we watch Scrooged- a family favorite- then head to church to celebrate the reason for the season! I hope everyone is having a marvelous Christmas Eve and an even better Christmas!


text:
Stand with Women Veterans
For over a year, Donald Trump spewed vitriol, divisiveness, and bigoted rhetoric on the campaign trail. He's disrespected women, our fellow veterans, people of color, refugees, immigrants, and those with disabilities. And now he has been sworn in as the 45th President of the United States.
They will try to strip away the basic civil liberties and freedoms that our nation was founded upon. They will try to take away our health care. They will try to tear apart families. They will try to marginalize women. And we will not let them succeed.
Sign the petition today: stand with women veterans in opposing Donald Trump and defeating Trumpism.


text:
TOUR5:EZE – MONACO - MONTE-CARLO 4 Hours 30
40€ Morning 9:00 to 13:30
50€ Afternoon 13:30 to 18:00
Panoramic View: From the heights of Villefranche, you'll be able to enjoy the spectacular scenery of the sea and the mountains.
EZE: Magic place in the azur, Eze seduces. The atmosphere is authentic and Eze has kept the tradition even now that it has become an international touristic site. Free guided visit to the FRAGONARD Factory.
MONACO: Discover the Prince's palace (Drop off at the palace), the circuit of Formula 1 and the Monte-Carlo square.


text:
Going to a Sci-Fi fancy dress party? Are you a Trekkie? Now is your chance to look like Scotty in the new Star Trek Movie, who is a member of the Engineering and Security division. Wear the officially licensed Scotty Star Trek Red Shirt from 2009 Paramount Pictures Corporation and warp speed into the coolest outfit of the night...00090162
Materials: 100% Polyester
Licence: 2009 Paramount Pictures Corporation
Colour: Red
Included: Shirt
Not Included: Trousers
Inflatable Gun Accessory
Every mob needs their weapons for fancy dress and every gangster needs his trusted trigger. Make it a safe and comical choice with the mean yet playful looking Inflatable Gun and shoot into character straight away as you take aim for that dress up party!
Materials: Plastic
Colour: Black, White
Included: Gun
Fancy dress sizes can vary from standard clothing. To ensure you have the best fit we recommend double checking your measurements and referring to the chart below. Size and fit can vary from brand to brand, so please use the chart as a general guide only.
Small 34" Chest, 26" Waist
Standard Medium Chest 36", Waist 26"-28"
Large 42" Chest, 34" Waist
X-Large Chest 46", Waist 36"-40"
We love your photos, it makes us smile to see you having fun in our costumes.
We have a lot, but we always want more!
Send your pictures to email@example.com.
We look forward to hearing from you.
Orders over £50 are delivered FREE using our 48HR SIGNATURE SERVICE option.
*All services are based on working days. Weekends, Bank Holidays and other closed days are not counted.
For a full list of delivery options including SATURDAY SERVICE, SAME DAY SERVICE, STORE PICKUP and BFPO please click here
For all Overseas information please click here
As the World's largest costume company we have a larger fancy dress range than any other UK supplier.
Choose from over 10,000 costumes, all available for next day delivery.
Largest selection of: Costumes, wigs, masks, make-up, fangs, shoes, bags, fashion accessories and much more.
Costumes for every occasion such as Halloween, Christmas and St Patrick's Day. Uniforms, novelty, sexy, historic, fairytales, superheroes - no matter what the theme we have a costume.
We've been fitting costumes for the stars for 174 years and that's why they choose Angels for Fancy Dress:
Thanks for the togs. James McAvoy
Thanks a lot for beautiful care and disguises. Penelope Cruz & Javier Bardem
Angels thank you for all my fancy dress needs being met. Big Love. James Corden
Everything you will ever need for a fantastic Party. Thank you. Emma Bunton
Thanks for everything. Saved the day. Gary Lineker