text:
Watch in full 720p. This is a very simple demo that shows how to use some of the new Android 3.0 APIs.
I've been following the development of Flash Catalyst, formerly known as Thermo, ever since it was announced and I was really happy when Adobe finally released Flash Catalyst beta 1 earlier this month. I played with it a little and I am really excited by what this tool will become.
To give Catalyst a try, I decided to write a very simple application to search for photos on Flickr. After 10 minutes in Photoshop, 15 minutes in Catalyst and 15 minutes in Flash Builder 4 I had a working application and I had written only a dozen lines of code.
Despite its qualities, Flash Catalyst has a long way to go. I know this is only the first beta of a 1.0 product but here is a short list of what limitations I encountered after writing a few simple applications:
- The tool sometimes doesn't feel responsive; I kind of expected this from an Eclipse-based Flex-based application in full screen mode on a 30″ monitor.
- All sizes and positions are hardcoded in absolute coordinates. The lack of support for layouts will definitely make Catalyst a lot less interesting for stand-alone AIR apps.
- There are only a few properties you can manipulate for each widget.
- Round-tripping between Catalyst and Flash Builder is worrisome if you're not careful.
- Integration with Photoshop is definitely lacking and far from what was announced (or at least I thought was announced.)
The Photoshop integration is the only real issue I have with Catalyst. You can apparently use Illustrator or Fireworks but these are tools I'm not very familiar with. This also means getting new licenses because only CS4 is supported (too bad for my CS3 copy of Illustrator.)
I can't wait to see what Flash Catalyst 1.0 will end up becoming and what Adobe has in store for the future releases.
Flash Catalyst and Flash Builder 4
A few months ago, I showed Shelves, an application to manage a collection of books on Android powered phones. I am an avid user of Delicious Library on MacOS X and I since no similar application existed at the time for Android, I decided to write my own. Needless to say, Shelves was largely inspired by Delicious Library.
Even though Shelves is not quite ready to be release on the Android Market, I decided to publish the source code under the Apache 2.0 license. The application is already usable and lets you add books by searching Google Books or by scanning their barcode (if you have the application called Barcode Scanner installed), search your collection by keywords or barcodes, import books from a CSV file and delete individual books. The only two features I need to implement before releasing Shelves are the ability to manually add/edit a book and to view a book's details.
If you are curious, you can see Shelves in action in the following video. You can also visit Shelve's project page for screenshots showcasing several features.
Note: the colors on the video are different from what you would see on an Android device. I created the assets specifically for mobile devices and the colors appear therefore more saturated on a computer monitor.
Shelves, an Open Source Android application
A few months ago I stumbled upon what came to be one of the most interesting Swing blogs I've ever read. Actually, it is the most interesting Swing blog I know of. Exploding Pixels, by Ken Orr, shows how to create beautiful looking Swing applications for Mac OS X.
Ken has a great sense of design, pays great attention to details and his examples are really well written. Even if you do not work with Mac OS X, you'll find a lot of valuable information on his blog, in particular how a UI developer should deal with details and pixel-perfect designs. I highly recommend you read all of Ken's posts right now :)
Sexy Swing Apps on Mac OS X
Thanks to the hard work of Kouichi Matsuda, Filthy Rich Clients is now available in Japanese. Now I wish I didn't drop out of my Japanese class after only one year :)
Filthy Rich Clients in Japanese
Chet Haase, a good friend and fellow co-author, just opened his new blog. I won't spoil you the surprise but you might be interested to know what Chet is up to nowadays :)
A New Blog
Chet and I are going to present another installment of Filthy Rich Clients at JavaOne 2008. We have a bunch of cool ideas for techniques and demos we would like to show you but I am very interested in hearing what you want to know about. If you have any visual effect, animation or graphics technique you would like to learn, please tell me and we'll try to put it in our presentation.
What do you want to hear about?
Chet finally released his AnimatedTransition library. This library is discussed in details in Chapter 18 of our book. Given its name, I won't insult you by explaining what this library does :)
Animated Transitions Made Easy
Adobe just released the AIF Toolkit which lets you create GPU-accelerated visual effects by using some sort of a pixel shader programming language. Apparently this technology, Hydra, will be included in Flash. Hmm, time to learn Flash and Flex more deeply?
More Awesomeness From Adobe
The more I play with Flex, the more I like it. I've been following this technology for a few months now and today I just stumbled upon a very exciting article. It's a report of Adobe MAX where a new tool, called Thermo, was showcased. Apparently it lets you turn a Photoshop mockup into a working UI in a matter of minutes. I have been dreaming of such an app for a very long time now and it seems that Adobe is on track to deliver something awesome. I can't way to give it a try!
Adobe Thermo
InfoQ just published a review of Filthy Rich Clients. This review contains a link to chapter 14 of the book, Timing Framework Fundamentals. Enjoy!
Another Free Chapter
Palantir guys are doing the kind of applications I wish I worked on (at least on the UI.) Check out their screenshots.
Beautiful Swing
Jasper just posted a blog entry in which he explains that Nimbus is almost done. That is exciting. Even more exciting is how Nimbus was implemented. Nimbus was built entirely with shapes and vectors in a visual editing tool built as a NetBeans module. This let Jasper and Richard draw every single component, even the icons, rather than hand-coding them… and the tool simply generates the Java 2D code. As bonus, everything is based on Painters, so you can easily replace parts of the look and feel with your own painters. Or you can reuse the painters for totally different purposes. I've been hearing about this tool for a while now and it has lots of great features, like layers, layers effects (drop shadows or glows), and so on.
That means we will all soon be able to create look and feels from scratch without writing any line of code and still get resolution independence and great performance. I can only hope this will lead to the release of many high-quality look and feels.
The Secret Behind Nimbus
Synthetica now supports a new theme called WhiteVision. It's a beautiful modern theme that I really encourage you to try. Screenshots can be found on Synthetica's web site but you can also try the new Synthetica Office demo to check it out.
New Look and Feel
If you're still not sure whether you should buy a copy of Filthy Rich Clients, take a look at our first review by Gregg Bolinger. Thanks Gregg!
First review for Filthy Rich Clients
James Gosling just put online a video of the project Green user interface (141 MB). Green, and its language Oak which later became Java, was running on the Star7, some sort of PDA/remote control Sun Microsystems was working on. It was in 1992. Enjoy, it's worth the look.
Java Roots
Some applications, like Eclipse, show a progress bar in their splash screen during the startup phase. This is a useful way to show the user that the application is actually working in the background. It helps the user to wait for the end of the process without kicking. Without such a progress indicator, the application could appear to be frozen.
During this year's Extreme GUI Makeover session we demonstrated a nice replacement for common progress indicator. Rather than using a progress bar, a percentage or even a status text, we chose to use colors instead.
Download the following video to see how our splash screen conveys the progress information.
- QuickTime movie (250 kB)
- DivX movie (200 kB)
Alternatively, you can take a look at the screenshot below. The splash screen first appear as a sepia image. As the application loads, the image gradually turns to a fully colored picture.
Implementing this effect is very simple with Java SE 6 and the Timing Framework to fake the loading process. The first state of the splash screen is shown by using a new command line flag which lets you pick any PNG file to use it as your application's splash screen. This is really nice because this command supports the alpha channel of the PNG file format, thus letting you create splash screens with drop shadows and other translucency effects.
java -splash:./lib/splash-sepia.png [...]
The biggest advantage of this flag over the use of a Java window is that the splash screen shows up as soon as the JVM is started. The user will therefore see the splash screen during your application's startup and during the JVM's startup.
Even though the JVM is responsible for creating and drawing the splash screen, our application can get a handle on a
Graphics2D object which lets us paint over the splash screen. In this example, we will fade the colored version of the splash screen over the original sepia image. By doing so, we will mimic the effect of coloring the sepia image.
SplashScreen splash = SplashScreen.getSplashScreen(); if (splash != null) { // Load the sepia and colored images colorSplashImage = null; try { colorSplashImage = GraphicsUtilities.loadCompatibleImage( getClass().getResource("/reality/resources/splash-color.png")); sepiaSplashImage = GraphicsUtilities.loadCompatibleImage( new File("./lib/splash-sepia.png").toURI().toURL()); } catch (IOException e) { } // Emulates the progress Animator animator = PropertySetter.createAnimator( 6000, this, "colorSplash", 1.0f); animator.addTarget(new TimingTargetAdapter() { @Override public void end() { show(mainPanel); } }); animator.start(); }
This piece of code grabs the
SplashScreen instance to make sure we have a splash screen. The null test is mandatory in case your application is started without the -splash flag. The code then proceeds with loading the sepia and colored images and finally starts an animation to simulate a lengthy startup process. In this example, we simulate a startup sequence of 6 seconds.
The actual work is performed in the method
setColorSplash(), which would be the equivalent of a progress bar's
setProgress() method. The method stores the current progress value, grabs the splash screen's graphics surface and paints the effect:
public float getColorSplash() { return colorSplash; } public void setColorSplash(float colorSplash) { this.colorSplash = colorSplash; SplashScreen splash = SplashScreen.getSplashScreen(); Graphics2D g2 = splash.createGraphics(); g2.setComposite(AlphaComposite.Clear); g2.fillRect(0, 0, splash.getSize().width, splash.getSize().height); g2.setPaintMode(); g2.drawImage(sepiaSplashImage, 0, 0, null); g2.setComposite(AlphaComposite.SrcOver.derive(colorSplash)); g2.drawImage(colorSplashImage, 0, 0, null); g2.dispose(); splash.update(); }
You might be surprised by the first painting commands. The first action here is to clear the splash screen. On the contrary to Swing components, the splash screen is never updated automatically and everything you draw on the splash screen is persistent. Without the clear operation, our drawings would add up and the colorization would happen a lot faster than expected. The rest of the code is straightforward. We first draw the sepia image, then we set an alpha composite to draw a translucent copy of the colored image. Do not forget the call to
update() to synchronize the splash screen with the changes you made on the graphics surface.
This is naturally only one example of what you can do with a splash screen to replace a dull progress bar. The translucency trick will work in many situations but you might want to consider SwingX's blending modes. The
BlendComposite class mimics all of Photoshop's blending modes and lets you create beautiful lighting and coloring effects.
Progress Bars Are Boring (Extreme GUI Makeover)
I blogged a while ago about Artemis. This simple tool uses a blurry background to draw user's attention onto a modal progress bar. Artemis is a good example of how you can use a blurry background. It emphasizes the importance of the modal dialog which doesn't require any context.
You can watch a video of Artemis in action. Note that I did not take the time to polish the UI. Therefore, the blurry background does not appear progressively but instantly (and the indeterminate progress bar clearly needs some work.)
The full source code of Artemis is part of chapter 16 of Filthy Rich Clients. It will be released at the same time as the book will be available in book stores.
Putting Blurry Background to Good Use
At JavaOne 2007, the Extreme GUI Makeover demo showed a semi-translucent dialog over a blurry background. This effect was explained in a previous entry on this blog. However, I received a few requests asking how the dialog itself was implemented.
This dialog is shown in the screenshot below. Not only is it translucent, but it also sports rounded corners and a subtle drop shadow. Implementing such a dialog is fairly easy and I will describe you what techniques you can use.
Before we delve into the code, remember that this "dialog" is in fact a simple
JPanel (more specifically a
JXPanel from SwingX) added to the frame's glass pane. To draw the rounded corners and the translucent background we first need to make our component non-opaque:
public class DetailPanel extends JPanel { public DetailPanel() { setOpaque(false); } }
The next step is simply to override the paintComponent() method:
@Override protected void paintComponent(Graphics g) { int x = 34; int y = 34; int w = getWidth() - 68; int h = getHeight() - 68; int arc = 30; Graphics2D g2 = (Graphics2D) g.create(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(new Color(0, 0, 0, 220)); g2.fillRoundRect(x, y, w, h, arc, arc); g2.setStroke(new BasicStroke(3f)); g2.setColor(Color.WHITE); g2.drawRoundRect(x, y, w, h, arc, arc); g2.dispose(); }
This implementation fills a black, translucent rounded rectangle to paint the background. Then it proceeds with drawing a white, opaque rounded rectangle using the exact same dimension, location and arcs. The border effect is rendered by setting a thick stroke on the graphics surface, 3 pixels in this case. As you can see you can create good-looking custom components with just a few lines of code.
Rendering the drop shadow is a bit more complicated though. SwingX provides a
DropShadowBorder that works in most situation but that fits only rectangular components. Because we are using a rounded rectangle component, we need another approach. Hopefully, SwingX contains a very handy class named
ShadowRenderer. As its name suggests, it can be used to render shadows. Just pass an image and you get a shadow for it.
Shadow rendering is performed in the
setBounds() methods, called whenever the component changes dimension and/or location. The idea is to create an image buffer in which we draw a rounded rectangle of the same dimension as the one we used at painting time. This image is then passed to the shadow renderer to create the shadow we want to paint behind the component:
@Override public void setBounds(int x, int y, int width, int height) { super.setBounds(x, y, width, height); int w = getWidth() - 68; int h = getHeight() - 68; int arc = 30; int shadowSize = 20; shadow = GraphicsUtilities.createCompatibleTranslucentImage(w, h); Graphics2D g2 = shadow.createGraphics(); g2.setColor(Color.WHITE); g2.fillRoundRect(0, 0, w, h, arc, arc); g2.dispose(); ShadowRenderer renderer = new ShadowRenderer(shadowSize, 0.5f, Color.BLACK); shadow = renderer.createShadow(shadow); }
Once again, very easy. Unfortunately, this technique does not work very well. Because our component uses a translucent background, we can see the shadow through. The result of the blending produces an almost opaque effect which defeats the purpose of having a semi-translucent dialog in the first place. This is why tools like Photoshop do not draw shadows behind the layers.
The solution is to get rid of the part of the shadow that lies within the area in which the component paints its background. This could be achieved at painting time but I chose to do it when generating the shadow. To the previous code snippet, just add the following:
g2 = shadow.createGraphics(); // The color does not matter, red is used for debugging g2.setColor(Color.RED); g2.setComposite(AlphaComposite.Clear); g2.fillRoundRect(shadowSize, shadowSize, w, h, arc, arc); g2.dispose();
When the "clear" alpha composite is set on the graphics surface, everything we draw erases the existing pixels. We thus cut a hole into our shadow. The final step is simply to paint the shadow in
paintComponent(), just before the filling and drawing of the rounded rectangles occurs:
if (shadow != null) { int xOffset = (shadow.getWidth() - w) / 2; int yOffset = (shadow.getHeight() - h) / 2; g2.drawImage(shadow, x - xOffset, y - yOffset, null); }
This code is not the most efficient nor elegant way to achieve this effect but it is clear, easy to implement and fast enough. This technique can be used in a variety of situations too. For instance, you could add a drop shadow to an icon by generating the shadow, then "clearing" with the icon itself. Note that the "clearing" step is required only when you are or might be drawing a translucent element on top of the shadow.
Rounded Corners and Shadow for Dialogs (Extreme GUI Makeover)
JavaDesktop.org just published a new Swing Sighting. The application is called Palantir and sports a very clean, very modern-looking Swing user interface. They even emulated Office 2007 menu/toolbar. I really urge you to go take a look at the screenshots.
Another Pretty Java Application
Shannon, Chris and I showed many cool effects during this year's Extreme GUI Makeover session, at JavaOne 2007. Since we cannot release the source code yet, I will explain some of the effects in detail. I will start with the blurred background displayed when a modal dialog shows up.
Blurring a dialog's or a menu's background is often used in video games to attract user's attention to the front most widgets. Using this effect allows you to keep the context without suffering from the visual clutter it might induce. Adobe Flex offers a similar effect when you bring up a modal dialog in a Flex application. To better understand this effect, you can take a look at one of these two videos:
- QuickTime full resolution (15 MB)
- QuickTime small resolution (1 MB)
You can also take a look at the screenshot below. Note that the screenshot does not show the fade in and fade out animations used to bring up and dismiss the dialog. The background gradually blurs while the dialog progressively becomes visible.
Writing this effect is surprisingly easy with the help of the Timing Framework and SwingX. The former is used to drive the animations while the latter offers support for alpha translucency and blur.
The actual "dialog" is made of two classes,
DetailsView and
DetailPanel. The first class,
DetailsView is used as a glass pane and is responsible for managing the animations and blurring the background. The second class contains the actual dialog, the black rounded rectangle in the screenshot. While
DetailPanel contains interesting pieces of code, we will not spend any time on it in this entry. Simply note, however, that
DetailPanel extends the
JXPane class from SwingX. This class offers a public property called
alpha which can be used to change the translucency of the container and its children.
Here is what the
DetailsView class looks like:
public class DetailsView extends JPanel { private DetailPanel detailPanel; private BufferedImage blurBuffer; private BufferedImage backBuffer; private float alpha = 0.0f; DetailsView(DetailPanel detailPanel) { setLayout(new GridBagLayout()); this.detailPanel = detailPanel; this.detailPanel.setAlpha(0.0f); add(detailPanel, new GridBagConstraints()); // Should also disable key events... addMouseListener(new MouseAdapter() { }); } }
You can notice that we use two image buffers. They are used to create the animation of a gradually blurring background. The basic idea is to capture the frame's content into a buffer, blur this buffer and paint it in the glass pane, behind the "dialog." Unfortunately, doing so would be impractical for an animation. Even though SwingX provides an efficient blur filter, it would be very difficult to render a smooth animation of that size with it. Instead, we keep the frame's content into an original buffer and blur that buffer into another buffer. At drawing time, we first paint the frame's content, then the blurred copy. By progressively changing the opacity of the blurred copy, we can simulate an increasing blur effect.
Our first step is therefore to create our buffers:
private void createBlur() { JRootPane root = SwingUtilities.getRootPane(this); blurBuffer = GraphicsUtilities.createCompatibleImage( getWidth(), getHeight()); Graphics2D g2 = blurBuffer.createGraphics(); root.paint(g2); g2.dispose(); backBuffer = blurBuffer; blurBuffer = GraphicsUtilities.createThumbnailFast( blurBuffer, getWidth() / 2); blurBuffer = new GaussianBlurFilter(5).filter(blurBuffer, null); }
This method relies on
GraphicsUtilities and
GaussianBlurFilter from SwingX to render a good-looking blur efficiently. Notice how the blurred buffer is downscaled before the filter is applied. This trick lets us reduce the blur's radius, thus making it a lot faster. We just need to scale this image back to its original size at drawing time.
Drawing the back buffer and the blur buffer does not involve any complicated trick. We just set the bilinear rendering hint on the graphics context and rely on an alpha composite to perform the translucent drawing:
@Override protected void paintComponent(Graphics g) { if (isVisible() && blurBuffer != null) { Graphics2D g2 = (Graphics2D) g.create(); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g2.drawImage(backBuffer, 0, 0, null); g2.setComposite(AlphaComposite.SrcOver.derive(alpha)); g2.drawImage(blurBuffer, 0, 0, getWidth(), getHeight(), null); g2.dispose(); } }
The most interesting part of this piece of code is the use of the field called
alpha, that you saw in the first code snippet. This field is a float which holds a value ranging from 0 (no blur, transparent dialog) to 1 (blurred background, opaque dialog.) The animated effect is generated by modifying this value over time. To do this, we will use the trusty Timing Framework:
public float getAlpha() { return alpha; } public void setAlpha(float alpha) { this.alpha = alpha; repaint(); } public void fadeIn() { createBlur(); setVisible(true); SwingUtilities.invokeLater(new Runnable() { public void run() { Animator animator = PropertySetter.createAnimator( 400, detailPanel, "alpha", 1.0f); animator.setAcceleration(0.2f); animator.setDeceleration(0.3f); animator.addTarget( new PropertySetter(DetailsView.this, "alpha", 1.0f)); animator.start(); } }); }
For those of you who don't know the Timing Framework, we are simply instructing it to animate two properties, both called "alpha," on two different targets,
this and the
DetailPanel (remember, its alpha property is provided by its superclass
JXPanel.) These properties are animated from their current value, 0.0f, to 1.0f over 400 milliseconds. The acceleration and deceleration are used to create a non-linear interpolation of the values over time and generate a more natural rendering.
That's all there is to it! Dismissing the dialog is done with the
fadeOut() method, whose code is almost exactly the same as
fadeIn(). Instead of changing the properties from 0.0f to 1.0f,
fadeOut() changes them from 1.0f to 0.0f. Remember to set
DetailsView as the glass pane on your frame and your effect is ready to go.
Blurred Background for Dialogs (Extreme GUI Makeover 2007)
Groovy is a very appealing language that I really enjoy using from time to time. Unfortunately, as many other languages, Groovy lacks decent development environments. Even though this shortcoming is being addressed by the Eclipse and IntelliJ, the Groovy Console remains a valuable tool to quickly test an expression or a script.
The console works fine and achieve its purpose really well. However, its GUI is somewhat lacking and integrates badly with Mac OS X. The following screenshot shows what the ordinary Groovy Console looks like on Mac OS X:
Mac OS X users will easily spot the problems with this user interface. The menu bar belong to the window rather than to the screen and the shortcuts are wrong (using Ctrl instead of Cmd.) Also, not shown in the screenshot, the About and Quit menu items are not in the appropriate location. After a few tweaks, here is the new UI:
There are three steps required to achieve this kind of integration with Mac OS X, two of them which you are probably already aware of. First, you need to tell Apple's VM to move the menu bar to the top of screen, out of the application's frame. At this stage, you also need to give your application its real name, otherwise Mac OS X will use the main class' fully qualified name (in this case,
groovy.ui.Console.) The Groovy code to achieve this is the following:
System.setProperty("apple.laf.useScreenMenuBar", "true") System.setProperty("com.apple.mrj.application.apple.menu.about.name", "GroovyConsole") UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
Make sure to set the properties before you initialize any frame and you will get the desired result. The second part of our "Mac OS Xification" is to use the appropriate shortcut keys in the menus. The
java.awt.Toolkit class offers the
getMenuShortcutKeyMask() method which returns the system's default shortcut modifier (Ctrl on Windows and Linux, Cmd on Mac OS X.) Again, using this in your application is quite simple:
def createShortcutWithModifier = { key, modifier -> KeyStroke.getKeyStroke(key, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | modifier) } def createShortcut = { key -> createShortcutWithModifier(key, 0) } // Uses Cmd-Shift-N/Ctrl+Shift+N def newWindowAction = action( name:'New Window', closure: this.&fileNewWindow, mnemonic: 'W', accelerator: createShortcutWithModifier(KeyEvent.VK_N, KeyEvent.SHIFT_DOWN_MASK) ) // Uses Cmd-O/Ctrl+O def openAction = action( name:'Open', closure: this.&fileOpen, mnemonic: 'O', accelerator: createShortcut(KeyEvent.VK_O) )
In this sample code, we just defined Swing actions with correct menu shortcuts. Creating a menu bar with those actions is easy with Groovy's SwingBuilder. Building the menus is also the opportunity for us to introduce the last trick regarding Mac OS X integration: handling the About and Quit menu items correctly.
def isMac = { System.getProperty("mrj.version") != null } menuBar { menu(text:'File', mnemonic: 'F') { menuItem() { action(newFileAction) } menuItem() { action(newWindowAction) } menuItem() { action(openAction) } separator() menuItem() { action(saveAction) } if (!isMac()) { separator() menuItem() { action(exitAction) } } } // More menus... }
This piece of code does not add the exit menu item when the application is running on Mac OS X. Every Mac OS X application shows this menu item in the system controlled menu named after the application itself. This menu appears in bold on the second screenshot. The main problem is to figure out to hook our code to this menu. In my modified version of the Groovy console, here is how I did it:
if (isMac()) { ConsoleMacOsSupport.handleMacOs(this.&exit, this.&showAbout) }
isMac() could be avoided if
ConsoleMacOsSupport was cleverer, but I decided to go with a simple yet effective implementation. As you can see, this class exposes a static method to which you can pass two method references. The methods bound that way will be invoked by the system when the user clicks either the About or Quit menu item in the application's menu. The support class is also written in Groovy:
package groovy.ui import com.apple.mrj.* class ConsoleMacOsSupport implements MRJQuitHandler, MRJAboutHandler { static initialized = false def quitHandler def aboutHandler public void handleAbout() { aboutHandler() } public void handleQuit() { quitHandler() } public static void handleMacOs(quit, about) { if (!initialized) { initialized = true def handler = new ConsoleMacOsSupport(quitHandler:quit, aboutHandler:about) MRJApplicationUtils.registerAboutHandler(handler) MRJApplicationUtils.registerQuitHandler(handler) } } }
ConsoleMacOsSupport simply delegates two Apple VM's specific handlers to our Groovy methods. Since Groovy won't even bother with this class at runtime if it's not required, it is safe to keep it in the Windows and Linux distribution. This kind of work would usually be achieved through reflection in Java to avoid compile-time headaches.
Groovy makes the use of those handles even sweeter thanks to optional method parameters. For instance, Mac OS X's quit handler does not expect any argument when invoked. However, we would like to bind the same method to a regular
JMenuItem when the application is executed on Linux or Windows. In this case we are actually writing an
ActionListener, and a parameter of type
EventObject is therefore expected. Groovy is here to make it simple:
// The action's closure (action listener) is bound to the exit(EventObject) method def exitAction = action( name:'Quit', closure: this.&exit, mnemonic: 'Q', accelerator: createShortcut(KeyEvent.VK_Q) ) // The MRJQuitHandler is bound to the exit() method ConsoleMacOsSupport.handleMacOs(this.&exit, this.&showAbout) // Optional evt argument void exit(EventObject evt = null) { // Cleanup, etc. }
Even though I did not used this feature in the Groovy Console, you can also install a handler to hook into Mac OS X's Preferences menu items. If your application offers some sort of options panel or configuration dialog, make sure to bind it to this menu item because that's where users expect to find this feature. Last but not least, all those examples work also in pure Java and should not required much work to transpose.
Improving Groovy Console's GUI
The source code, demos and examples for the chapter 11 of Filthy Rich Clients are available online. This chapter presents the repaint manager.
Chapter 11 presents two demos, TranslucentPanel and ReflectionPanel The first one is an exercise for the reader showing why and when the user of a RepaintManager is necessary. The second one presents a component that can render real-time reflections of its children. The demo requires QuickTime for Java to add a reflection effect to a QuickTime movie streamed from the web. When QuickTime is not available, the demo reverts to regular Swing components.
Update: The final PDF of the book is available for purchase online \o/
Both screenshots below show what the demo looks like. As you can see, the reflection panel can be used with any component you fancy. All you have to do is
add() your component inside the panel and you're done.
Repaint Manager Demos (Chapter 11)
Chet just uploaded www.filthyrichclients.org, the web site I designed for our upcoming book, Filthy Rich Clients.
We will try to make the demos and their source code available on this web site as zip archives. For the time being, the web site offers a link to the project page where you can find the CVS repository. This web site is still very much a work in progress and has been tested only with a few web browsers so please forgive me would you encounter any problem.
Update: The web site has now been tested, fixed and tested again with Internet Explorer 6. You should now be able to view the web site in good conditions.


text:
The North Atlantic right whale is an endangered species that spends its summers in the Gulf of St. Lawrence. With just over 500 animals left, any decrease in the population is not a good sign for the species. Unfortunately, since June, ten whale carcasses have been found in the Gulf of St. Lawrence, where the whales spend their summers. This is an unprecedented number of dead whales, the likes of which haven't been seen since whaling was outlawed in 1986, according to marine biologist Tonya Wimmer. Researchers know of only three calves born this summer, so these losses could be catastrophic to the population.
What's worse is that examinations of the whales show that the majority of the deaths were due to human activity. The Gulf is a high-traffic area with large vessels either passing through or fishing. Most of these whales suffered blunt-force trauma from either ships or human equipment. One whale died from chronic entanglement–having a piece of fishing equipment stuck on it for too long.
Detangling has been put on hold indefinitely by the government for the safety of rescuers and researchers. This means that any whales currently suffering from being enmeshed in ropes or nets will have to stay that way until the ban is lifted.
Well, that all sounds mighty disheartening, what's the good news? The good news is: the government is finally doing something about it. On Friday, Transport Canada and the Canadian Coast Guard announced a temporary mandatory slow-down order for vessels 20 meters or more in length in the area. Those who don't abide by the speed limit–which will be enforced both by sea and air–will face fines of up to $25,000. The order will remain in place until the whales migrate to Georgia and Florida waters for the winter. The government is also asking smaller vessels to slow down voluntarily when passing through the Gulf.
The positive side to the fact that these whale deaths are the result of human activity is that it means it's within our power to stop them. Unfortunately, the whale population has a slow growth-rate so it will take decades for it to recover from its endangered status, but we can make sure fewer die of unnatural causes. Researchers are looking into stopping entanglements before they occur by experimenting with rope-less fishing–a practice they use to protect marine life in Australia.
We need more permanent protections than the temporary slow-down though, especially in the Gulf of St. Lawrence area. This summer, there are five times the usual number of right whales in the Gulf and scientists don't see that number decreasing next year. They suggest climate change is to blame–that the food supply in other areas has been depleted, forcing them to seek out new sources. Hopefully, the order–and implementing it every year–will protect the right whale population enough for us to see it grow.

subset: commoncrawl


text:
NEW YORK, Dec. 27 (UPI) -- Green Bay's Aaron Rodgers and Tom Brady of the New England Patriots have been selected as the Pro Bowl starting quarterbacks, the NFL announced Tuesday.
The Pro Bowl rosters released by the league showed Brady starting for the AFC with Rodgers getting the NFC nod.
The Patriots and the San Francisco 49ers each had eight selections to lead the NFL, while the Packers and Baltimore Ravens followed with seven choices each.
The other signal-callers to get Pro Bowl invites included San Diego's Philip Rivers and Pittsburgh's Ben Roethlisberger for the AFC, along with Drew Brees of New Orleans and the New York Giants' Eli Manning for the NFC.
The all-star contest will be held Jan. 29 in Honolulu -- one week before Super Bowl XLVI in Indianapolis.


text:
In the past 2-3 years I've done a LOT of travelling to lay hands on other martial artists. I've done aikido, judo, jodo, and jujutsu, and I have ranged from Virginia to Oklahoma and from Tennessee to Texas. Last year I did at least 1 trip per month.
I've seen and felt a lot of very competent artists, but only 2-3 that I consider really, really masterful.
I've met several martial artists who can dash me into the ground violently every time I touch them. But that's not mastery. It's not in the vigor of their technique. So, what feel do I associate with mastery?
When I grab or punch at someone that instantly takes control of me and places me on the ground gently, under complete control, I say to myself, "Wow, this is someone I need to spend more time with!"
To me, inexorability is the mark of the master. You attack them and you get the feeling that you are destined to sit down and calm down and nothing that you can add to the encounter will change that. The master accepts your aggression and calms it down to a zero energy level and there is nothing you can do to get amped back up.
I get this feel when doing judo with Bob Rea. I get this feel doing aikido with Henry Copeland or JW Bode or Carmen Pelusi. I get this feel with Jack Beiler in jodo. There are others... but not many - most of the players I've laid hands have more of a heavy-handed Hulk-smash sort of pillage&burn feel - at least when compared to real mastery.
I want to grow up to be inexorable
[photo courtesy of Cameron Grant]
Want to discuss this blog post?
Come find me on Facebook at my Mokuren Dojo FB group
Patrick Parker


text:
Shotoku Unveiling New Control System
Shotoku is readying for the IBC Show with a new robotic camera control system. The TR-T/HD Touch Control Screen system provides user customizable layouts and SDI HD wide screen options. Shotoku will be showing it along with the company's newest TR-S High Capacity Flexible Control Panel at their stand. It supports up to 16 cameras and is ideal for the largest robotic installations.
Also look for Shotoku's TRP-100 Fully Robotic Studio Pedestal. It supports payloads of up to 100 Kg and has an elevation range of 750 mm. Travel speed is 300 mm per second. It features a pneumatically balanced three-stage height mechanism and its navigation system can be calibrated within seconds.
Shotoku will be at stand 11.G30.


text:
InkThemes InkExit WordPress Exit PopUp Plugin v1.1
Last Updated on April 6, 2016
WordPress Exit popup generator plugin displays overlapping light window on?when visitors try to exit from your website.
Displays?a light box popup in which you can show?offers and?direct response ads,?get sign ups?and?feedback.?You can display different popups on different pages?based on the content type and assume the interest of users on each particular page.
Sales Page:


text:
FINALLY, a tire that lets drivers, in any car, on any road, maximize their driving pleasure. The moment you shift gears and turn the wheel, the RE760 Sport goes into action, giving you quick response and precision control. You'll be impressed by the powerful grip and stability in both wet and dry conditions. Combine this exhilarating performance with a tread pattern optimized to reduce noise, and you might become addicted to the road.
* Please refer to the appropriate Tire Limited Warranty booklet for complete limited warranty details. See each warranty at your authorized Bridgestone retailer for details and restrictions.


text:
Forbes talks to GearHeads CEO Chris Riley about why listening to your customers is crucial for a successful content and social strategy.
In June of this year, Karen Webster, who is the CEO of Market Platform Dynamics wrote an article with a very, shall I say intriguing title: The Dangers of Listening To Consumers. She writes: "If you want to create a digital commerce strategy that maximizes your chances of adding value to the consumer and merchant experience on the Web and/or via the mobile phone, whatever you do, don't ask consumers what they think."
Now the very next line in her piece explains just what she means by the "dangers of listening" — "Better to watch what they do instead." The operative word is watch for her point was there is a big difference between what people say they will do vs. what they actually do.
And she is 100% right.
But there's a flip side to the whole "listening to your customers" of course. I say 'of course' because is should be obvious to every marketer there is are inherent advantages to in fact actually not only listening to your customers but also acting on what they say.
Not long ago I wrote of the new campaign put out by the Philadelphia 76′ers NBA team. Team CMO Tim McDermott, in speaking about the new campaign which was created in part based on feedback from its fans said he always felt that "if brands are just willing to listen to their customers, their customers will tell them the answers."
Shifting Gears
I am the first to admit the amount of knowledge I have when it comes to cars and really any motorized vehicle is just about on E on the gas tank of acumen. However, what I am is a voracious consumer of content – no big surprise. In my role I pore over a whole lot of content from a whole lot of brands, some well-known; some not-so-well-known.
It is the latter which GearHeads falls under. A site which provides the latest information about automotive news and trends, their site as well as their social media presence(s) are one built mostly and proudly I might add, by listening to its customers.
I had the chance to speak with Chris Riley, the CEO not long ago and in prep for our call I was told that he takes the time to read every communication the company gets from its customers. I of course found this hard to believe but it was in fact 100% true.
Steve Olenski: Why do you, as the CEO personally read every single comment, email, and message received from your customers? Aren't you too busy for that?
Chris Riley: I don't think any CEO should ever be too busy for customers or readers of a given brand's content. Maybe I spend more time on it than others but I believe very strongly that time should be dedicated to being hands-on with your customers and readers.
I've been in touch with our readers since starting GearHeads. Back then I had a very small budget and felt paying close attention to our readers and giving them what they wanted was important. That was a major contributing factor to our rapid growth and will continue to be in the future. Our content team interacts with our customers and readers too, of course. And I can tell you first hand I've seen take suggestions from customers and readers and incorporate them into new content.
Olenski: What's an example you can share of you reading what your customers tell you then acting on it?
Riley: I can give you a list there. Basic things would include new direction on content, as I mentioned, and followup articles, too. On a larger scale you have things like how we pushed into motorcycles. We had posted a video which included a motorcycle racing a car, the comments were loaded with readers showing off their motorcycles so it was an instant no-brainer that they wanted to see more bikes.
We posted a few and they received a lot of attention so we added a new category to the main site and setup a separate fan page for motorcycles, the fan page has been active around 4 months and already has over 90,000 followers but the past month the growth has really picked up and the readers there are even more active than on the automotive side. We have several other big ones coming up but I'll wait until they are ready to launch to tell you about them.
We spend a minimum of $30,000 a month on Facebook alone and part of the reason for that is to monitor constantly what people are saying and what content they like and we can react accordingly by posting more of what they like and less of what they don't.
This also led to the launch of our new community section on our website, which allows users to post their own content and show off their cars or motorcycles. People were constantly sending them to us via private message or in comments.
So we figured let's just give them a place where they can do this. We do not monetize this section whatsoever for the simple reason it belongs to our customers and readers.
Olenski: This all sounds so simple and obvious, listening to your customers. Yet so many brands do not. Why?
Riley: I can only guess that they feel their time is better spent other places. If I have other priorities to complete then I will put in more of my personal time to maintain that reader relationship. This is more important than completing objectives. For Gear Heads, engaging our customers and readers is always the top priority. If you aren't listening to your customers, then someone else, AKA your competition, will.
Olenski: In today's world, perhaps more than ever, it's vital for a brand to not only listen to its own customers, but also monitor what's being said elsewhere, AKA their competition. Do you agree?
Riley: Absolutely. As I just mentioned, if you aren't listening to your readers then someone else will and it's only a matter of time before you're closing your doors. Right now Gear Heads has gone from starting in 2012 and 5,000-10,000 page views a day to by the end of that same year to 300,000+ a day and it's because we're constantly searching for what isn't being provided and using that to bring in new readers. With the rapid pace things can change with technology these days, if you aren't growing you're dying.
This article was written by Steve Olenski from Forbes and was legally licensed through the NewsCred publisher network.
Originally published on Nov 30, 2015 11:00 AM, updated Sep 21, 2016


text:
Home > Administration > Where have I been?
Where have I been?
January 10, 2019 Leave a comment Go to comments
Lost I guess. I had to put my blog on the back burner while I focus on life and work. I hope to come back to it this year. Hopefully with more topics than just SQL Server. Lately, I find I been only teaching PowerBI.
So as time permits, I'll get posts rolling her this year :).
New year resolution; 1 post-month :).
Categories: Administration


text: Leyla McCalla Brings Her New Community to Jazz Fest Leyla McCalla has largely conducted her career as a lone wolf, performing with just her cello or her banjo, or on occasion a second voice or instrument. Many people first encountered her as a member of the Carolina Chocolate Drops, but that was a fairly intimate acoustic ensemble, and her first two solo albums—Vari-Colored Songs and A Day for the Hunter, A Day for the Prey—are defined by her instrument and singing as she explored her Haitian Creole heritage. Read more about Leyla McCalla Brings Her New Community to Jazz FestAdd new comment


text:
Bellevue, WA -- (SBWIRE) -- 12/12/2012 -- While the Amazon Kindle available at http://www.amazon.com and the Nook have both leveled the playing field in many ways between writers and the publishing houses, marketing is not one of them. As a matter of fact, because publication is now as easy as uploading a new book to the Amazon or the Barnes and Noble website, unique problems have emerged for self published authors. Chief among these problems is figuring out how to best gain visibility in an already saturated market. While quality writing and an excellent story is a must, having to wait for word of mouth to get your book exposure is a passive strategy that can take years to work. Fortunately, there is now a better way to reach an audience of prospective readers.
The World Writer Book Award is now accepting submissions from self published authors. The deadline for entry is December 31, 2012. Categories for fiction and nonfiction are offered, as well as for short fiction and poetry. This is an excellent opportunity for writers to finally get noticed and promoted to readers.
There are numerous ways that self published authors typically go about promoting their work. One is through writing posts on different blogs. The problem with this approach is that it takes additional time away from your writing schedule, which most authors know is often too short already. Direct ads through networks such as Adsense are also used to try and reach prospective readers. This strategy usually ends up costing the author hundreds of dollars and hours of time without leading to any substantial sales. Finally, authors try and send their books to bloggers and ask them nicely to review their work. Unfortunately, everyone else is now doing this so most bloggers are swamped with review requests. The likelihood of your book being chosen among the pile of hundreds already available is very slim.
With this contest, however, everyone gets a fair shake. Your book gets read and judged against other books in the same category. If chosen as one of the winners, you will receive the recognition required to boost sales and visibility in the book market. Rising above the sea of self published titles no longer has to be a time consuming fight. The World Writer Book Award offers the prestige required to attract new readers who are always yearning to read the next best thing.
While readers are curious, the majority rarely explore titles outside of those published by well-known authors. The exception to this rule is books which have garnered critical praise and/or won awards. You've put a lot of blood, sweat, and tears into creating an amazing book, so shouldn't it receive the recognition that is deserved? Submit your book today to the World Writer Book Award contest at http://www.WorldWritingCorner.com to finally attract those curious readers to your work and boost sales.
About World Writing Corner
Award winning author Jeanna is a judge at the World Writing Corner, an organization devoted to helping authors succeed. She can be reached at email@example.com. The firm is located in Dover, Delaware.


text:
500 Fifth St, NW
Washington, DC 20001
The latest news from HMD, including information about new reports, activities, meetings, and other noteworthy events.
Displaying: 1 to 2 of 2 News and Announcements
Many low- and middle-income nations do not have technologically advanced regulatory systems, which limits their oversight of food and drug safety, says a new report from the Institute of Medicine.
Members of the Institute of Medicine committee that wrote the new report Ensuring Safe Foods and Medical Products Through Stronger Regulatory Systems Abroad will discuss their report with interested stakeholders and reporters at a one-hour public briefing. The briefing will begin at 1 p.m. EDT Wednesday, April 4, in the First Amendment Lounge of the National Press Club, 529 14th St., N.W., Washington, D.C.


text:
By Brandon Henry
The Persian Leaps' deliver a powerful EP with Drive, Drive, Delay. The 5 songs steamroll through catchy melodies slathered in thick distortion, thundering drums reminiscent of the great power rock bands of the '90s. Continue reading
Filed under: Music Review | Tagged: Indie, Local Music, Rock, The Persian Leaps | Leave a comment »


text:
SHAH ALAM: The next general election (GE14) will be the dirtiest in Malaysian history because of the Election Commission's (EC) failure to properly manage the voter objection process which will deprive many voters of their right to vote, says Nurul Izzah Anwar.
The PKR vice-president said the objection process has forced affected voters to wait up to six months before having their names included in the electoral rolls.
"Even then, there is no guarantee, if the affected voters do not show up to challenge any objection lodged against them," she added.
The process works this way: When an objection is lodged against a voter, the EC will issue a letter requiring the voter to turn up for a hearing to argue their case for inclusion in the rolls. If the voter fails to make an appearance, then their name is struck off the register.
Klang MP Charles Santiago yesterday condemned the process as a bane for opposition parties to get more voters onto the electoral rolls.
He said that out of 274 registered voters in two parliamentary constituencies in Selangor, who had objections lodged against them, only about a quarter of them turned up yesterday to challenge the objections.
Santiago also accused Umno of abusing the system to get registered names struck off the rolls in opposition-held constituencies.
"What worries me is that GE14 will be the dirtiest and the most manipulated general election in the history of Malaysia," Nurul Izzah said.
"The issue here is not about correcting the bureaucracy but about the EC denying the right of Malaysians to vote by making it difficult for them to vote," she told a media conference at the Selangor EC office here today.
Nurul Izzah was at the EC office together with Pakatan Harapan youth leaders to hand over a protest memorandum to Selangor EC deputy director Kamarul Azman Ahmad Sabri, for not distributing the first quarter of the Supplementary Electoral Roll to political parties.
On another matter, Nurul Izzah said 140 designs for a proposed Pakatan Harapan common logo had been received from the public.
The logo design was made open to the public after the initial internally-produced designs were criticised as uninspiring.
"We welcome the participation of the general community and the final logo will be shortlisted by the leadership," she said.


text:
Google AdWords: Get Impressions and Clicks Starting Now
If you are serious about marketing your services and products on the internet, the most important part of your strategy has to be Google AdWords services. Why? Google is the most frequently used online search engine. More than three quarters of all searches in the United States originate at www.google.com. Naturally, Google's search results page and content network get millions of impressions before most other web pages. Therefore, visibility on the Google AdWords network is of critical importance when it comes to making a profit online through pay-per-click advertising.
Adwords advantage:
There are a number of advantages to having an effective AdWords based pay-per-click (PPC) advertising strategy in place. Firstly, Google AdWords services directly helps you get increased traffic to your website. As a result, your presence on the internet and your sales improve. Secondly, it is also an extremely cost effective way to market online. You pay for your advertising by the number of clicks you get. Thirdly, considering that every click has the potential to convert a site visitor into a customer, it is an important investment. And finally because you pay for your advertisement only when someone clicks on it, it is unlike conventional marketing where you have to pay for advertising even when it does not generate any sales.
Effective targeted marketing:
The value add that Google AdWords services provides for you financially is based on the fact that it is a highly targeted service. If your ad is relevant to a search query, it will be displayed. So your ad is displayed to people who are already looking for similar services or products. Naturally, such users are more likely to click on your ad and increase your sales. Another interesting fact is that PPC through AdWords operates on a system that is separate to your search engine rankings. You are also able to target geographical regions or countries.
Constant feedback and improvement:
A great thing about AdWords is that it allows for continual changes to be made to keep improving your return. If you see that some keywords are not working out for you or your ads are not generating the desired revenues, you can modify your keywords and ads as you go along. Deployment is fairly quick compared to conventional SEO and you can see if your changes were successful. This quick feedback and improvement loop helps you keep an eye on your ROI. Your money does not get spent unnecessarily just because an ad is not working and you cannot change it right now. With AdWords, you can!
Get Adwords expertise at Tradepage:
With Google AdWords and you can spend your advertising budget on tactics that work. At Tradepage, we have helped many businesses and websites benefit using Google AdWords Services for advertising. Get in touch with us today.


text: Derek Shaw is the Chief Operating Officer (COO) at Sports 1 Marketing and oversees all day-to-day business operations at the firm. He has spent over 13 years in the Consumer Package Goods Industry working for companies such as Johnson & Johnson (Neutrogena), Crabtree & Evelyn, Pulmuone Foods, Gallo Wine, and Pacific World Cosmetics. He has held a range of leadership positions within Brand Marketing, Trade Marketing, Sales, Sales Strategy, and Operations.


text:
Skip to main content
Suspicious about someone your child is talking to online? Worried your child may be a victim of online sexual abuse or exploitation? Read this advice from NCA-CEOP, the child protection command of the National Crime Agency to find out where and when to report
Read more
about Online sexual abuse and exploitation: where do I report if I'm worried about my child's safety online?


text:
The Caspari Center has a mixed Israeli and international staff who work together with a broad network of associate teachers, lecturers, and scholars.
Executive Staff
International Director / CEO: Elisabeth Eriksen Levy
Elisabeth Eriksen Levy (M.Div.) has served as International Director/CEO of the Caspari Center since August 2013. She holds a Masters in Theology from the University of Oslo and a BA in French and Hebrew, and has also studied at the Hebrew University in Jerusalem. Elisabeth worked for the Bible Society in Israel from 1995-2002, and in Norway from 2002-2013. Elisabeth lives in Jerusalem with her family.
Israel Director: Alexander Goldberg
Alec Goldberg (M.Sc.) has served as Israel Director of the Caspari Center since 2009. His primary responsibility is development and oversight of the Center's ministry to local Messianic congregations. He has been living in Jerusalem, Israel, since 2003, at which time he immigrated from Russia together with his family.
David Serner
Director of International Studies
Margarita Kontorovich
Project Coordinator
Sanna Erelä
Project Coordinator
Jennifer Nataf
Administrator & Project Coordinator
Terho Kanervikkoaho
Project coordinator
Abbey & Tomi
Board of Directors and Partners Council
The Caspari Center is governed by the Caspari Center International Board. Members of the International Board are approved by the Caspari Center Partners Council. The Partners Council consists of representatives of international partner organizations and meets once a year.
Board Members
Rolf G. Heitmann
Board member since 2005
Oslo, Norway
James C. Galvin
Board member since 2004
Elgin, Illinois, USA
Bill van Loon
Board member since 2007
Palatine, Illinois, USA
Per R. Eriksen
Board member since 2008
Fredrikstad, Norway
Howard Bass
Board member since 2016
Beer Sheva, Israel
Magnus Riska
Board member since 2008
Helsinki, Finland


text:
Q. What are safe levels when taking B12 shots?
If you are receiving B12 shots, you will want to follow your B12 levels at least every four months and quarterly would be preferred. Your level would best be 1100 pg/ml, but, should not… more»
Q. What are the downsides to casein and whey protein?
In order to know more clearly the downside of casein and whey, you would best read The China Study by TC Campbell and Move Over Milk by Dane and Vickie Griffin. In short, casein acts like a… more»


text:
Solactive GURU underlies UBS product
Solactive AG announced that its Solactive Guru Index (GURU) underlies the UBS Open End Index Certificate which is now listed on Frankfurt and Stuttgart Stock Exchanges.
Steffen Kapraun, Structured Products expert at UBS comments: "The UBS Open End Index-Certificate on the Solactive Guru Index enables German investors to gain exposure to the high conviction stock picks of leading hedge fund managers. At the same time they can benefit from the cost efficiency and liquidity offered by structured products."
GURU tracks price movements of the top US listed equity holdings of a group of hedge funds. The selection is based on 13F Filings, which are publically available documents that all hedge funds with more than USD 100 million in U.S. equity investments are required to report to the SEC on a quarterly basis. The objective of the Index is to track holdings for which the 13F information is most valuable.


text:
Mass Effect is a series comprised of moments. Epic ones, sad ones, heartfelt ones...whether it's interacting with one of your squad members or watching a disaster unfold, the Mass Effect trilogy is one that has undoubtedly reached its grubby hand into your soul and tugged on a nerve or two.
While cataloging every single one into a reasonable written feature is nearly impossible, let's take a look back as we prepare for the release of Andromeda and appreciate some of the most emotional moments in Mass Effect history.
*Major Spoilers for Mass Effect 1, 2 and 3 Below*
Mordin is a tragic hero, a character whose redemption is found only in ultimate sacrifice. A salarian scientist, Mordin was one of the minds behind the genophage that rendered the entire Krogan race sterile and unable to reproduce. He later admitted to making a grave mistake with the creation of the genophage, blaming his decision on short-sightedness and irrational thinking.
When given the chance to make things right, Mordin accepts the chance with quiet, powerful resolve. While there are ways to prevent Mordin's demise, most paths lead to him enacting the dispersion of the cure into the atmosphere of the Krogan home world Tuchanka. But, since his predecessors rigged the tower to explode, Mordin knows it's a one-way trip to manually activate the systems inside the tower to filter the Krogan cure into the air. With a nod, he tells Shepard it has to be him, saying "someone else might have gotten it wrong."
Solus is lovable and quirky, a fast-talking researcher who tends to converse more with himself than anyone else. This moment marks a powerfully complex one for Mordin, who has spent his career helping people whenever possible, only to see his life end to try and fix his biggest mistake. Watching as he ambles up to the computer, either singing or speaking calmly to himself, it's hard to not feel a twinge of admiration and grief for the loss of the scientist salarian.
You're likely to run through a few different judgements when meeting a character for the first time in Mass Effect: will they be useful on my team? What are their strengths? What's their personality like? And, arguably most important: are they attracted to me?
Romance is a meta game within BioWare RPGs, specifically within Mass Effect and Dragon Age. And in Mass Effect, the romantic options are weirdly satisfying, especially when Shepard is able to flaunt their charisma and make just the right dialog choices to woo the person (or alien) of their desire.
And when the stars align and you're able to coax them into your private quarters, it's a winning feeling on par with that of defeating the Reapers.
In the original Mass Effect, the first character death the player has a hand in deciding comes when both Kaidan Alenko and Ashley Williams are sent to two different points during a fight. Depending on which order Shepard makes, one of them will inevitably die on that mission, leaving you saddled with the guilt of the first of many character deaths.
While they'll stick with you throughout Mass Effect 1, they're noticeably absent in Mass Effect 2, since they're still working with the Alliance and have no idea whether Shepard is alive or dead. That is, until you encounter them while on the human colony Horizon.
This moment was particularly strong if you romanced them during the first game, feeling very much like encountering an old partner for the first time in years after not speaking, or -- in Shepard's case -- not being entirely alive. It's also an uncomfortable one to sit through, because they immediately start blaming Shepard of betrayal when they learn of Shepard's ties to Cerberus. It's a bittersweet reunion and a peek into the complex politics of humanity in a galaxy filled with more than one dominant species.
Thane Krios is the smooth, honor-bound drell assassin who serves as something of a moral mentor to Shepard. A principled killer, Thane is calm and collected, often staying cool in the most intense of situations.
During a fight with known jerk and discount anime protagonist Kai Leng, Thane sustains a grave injury and is rushed to get urgent medical attention. Go to visit him in the hospital, and you'll be given the worst news: they're able to patch him up, but his terminal illness is making it impossible for his body to replicate the blood he lost from the wound. The hospital usher allows you time to say your goodbyes, and in one final act of selflessness, Thane, asks his son and Shepard to join him in a prayer for salvation.
Once Thane peacefully passes, however, his son Kolyat informs Shepard the prayer was not intended for his father's soul -- it was for the commander's.
Losing Thane to Kai Leng is a bummer enough, but the charismatic drell's final act of preservation for his dear friend was enough to make the moment an emotional gut punch.
The moment the Collectors board the Normandy and begin scooping up the human crew members and taking them away is already bizarre and unsettling, but it's made even more tense when the player is put in control of the ship's hotshot pilot Joker. Because of the brittleness of his bones, Joker has difficulties with walking -- which makes his desperate attempts to stop the Collectors all the more nerve-wracking. Players are left on edge as they gradually guide Joker through a living nightmare where humans are murdered and dragged away at the hands of the giant, insect-like creatures just a few feet away.
It's the small touches that make this scene; Joker's intermittent gasps and hushed obscenities, NPCs promising protection shortly before falling victim, and the handful of times Joker narrowly escapes capture in order to manually access the deeper reaches of the ship's mechanical interior.
Mass Effect 2 is a game about vulnerability, a game constantly leaving you feeling prone to losing any one of your team members in a horrible incident. Watching the Normandy's crew collapse under the pressure of the Collectors through the eyes of one of Shepard's closest friends was especially heartbreaking.
Mass Effect 2 is made up mostly of missions exploring the stories of individual crew members aboard the Normandy, each with their own set of tragic or troublesome circumstances. But none are quite as heartbreakingly sad as Jack's.
Abandoned from a young age and picked up by a researcher branch of Cerberus, Jack was a powerful biotic subjected to endless tests and psychological torture. She became a formidable, fearsome figure at the facility where she was housed, and the other subjects suffered more traumatizing tests and experiments because of her strength and power. While the story remains foggy, she had a hand in the murder of many residents of the facility, faculty and fellow students alike.
Driven to developing psychopathic and antisocial tendencies, Jack has lived a life in the shadows, forever shunned to exist outside the law. Her tattooed skin chronicles the many hardships of her life, and her hardened exterior and unwillingness to trust serve as protective efforts to maintain her composure and autonomy. Jack is a valuable and relentless ally for Shepard, and standing next to her while visiting the now-abandoned facility and thwarting attempts to revive it was a gruesome, sobering moment in Mass Effect 2.
Mass Effect 2 takes the idea of a strong opening and cranks it up tenfold, creating a powerful opening that sees the Normandy completely destroyed, accentuated only by the raspy, labored breathing of a slowly-dying Shepard.
This opening is especially impactful because of how it takes everything the player is familiar with and literally blows it up. Gone are the beloved companions you rolled with for the last 30 plus hours in game one, replaced by a string of new allies you're not entirely sure you can trust. It also sets up for a fun get-the-gang-back-together sequence within the first few missions, helping the Commander assemble a strong crew of friends old and new while also grappling with working for a morally questionable organization. If ever there was a way to exceed expectations, Mass Effect 2 did so from its very beginning.
The Omega 4 relay is the looming boogeyman of Mass Effect 2. So little is known about it, including the reason why ships that pass through rarely return. At the other end of the Omega 4 relay is the main base of the Collectors, which -- as some theories posit -- may be the reason why so few ever successfully return.
Once it's discovered, the Omega 4 relay rests in the back of the player's mind as they're constantly reminded they have to go through to put an end to the Collector threat. Once all side missions have been completed and all preparations have been made to keep as many members of the crew alive as possible, you're then able to give the thumbs-up and travel through the relay, which proves to be just as dangerous as initially feared. The constant concern about what it is that may be found on the other side makes the Omega 4 relay an especially creepy aspect of Mass Effect 2, and the passage through it is fraught with tension and anticipation as the crew prepares for the absolute worst to greet them on the other side.


text:
The Deep End: Jaws
Just when you thought it was safe to go back into the pool…
Produced by the City of Sydney
Tickets to this event are SOLD OUT.
Just when you thought it was safe to go back into the pool…
Golden Age Cinema & Bar takes you into the depths of the Andrew (Boy) Charlton pool for a thrilling harbour-side screening of Jaws.
When Jaws premiered in 1975 it ushered in a new era of Hollywood blockbusters, but the misunderstood shark suffered some serious negative PR. Fortunately, we've come a long way since then to better understand our relationship with the ocean and all that lurks beneath. The Deep End is a night that will stir fear and fun while dispelling myths of a world we know so little about. During the evening, enjoy delicious seafood, ocean-inspired drinks, and hear special guests describe their experiences with the big blue. You won't need a bigger boat, because there'll be floating or 'beach-side' seating to sit back and watch Jaws, the ultimate outdoor fun summer classic (that's still surprisingly scary!).
Perched between the sparkling Woolloomooloo Bay and the Royal Botanic Gardens, the Andrew (Boy) Charlton Pool is a Sydney icon, making it the perfect setting for The Deep End, especially during our summer season.
Golden Age Cinema & Bar has captured the imagination of a discerning Sydney audience with its progressive program of cults, classics, creepies, cheapies and the best new releases. Art & About is excited to partner with them to deliver site-specific cinema events across our 2015/16 calendar.
The Deep End is an outdoor cinema "screaming" that's perfect for Sydney in summer. All together now: "You're going to need a bigger boat."
Tickets to this event are SOLD OUT.
Keep an eye on the Art & About Facebook page or sign up to the Golden Age newsletter for updates and reminders.
Visit the Golden Age Cinema website, Golden Age Cinema Facebook and Golden Age Cinema Twitter.
About Art & About
Our city shines in every season, and now Art & About Sydney allows to you celebrate each one with our ongoing program.
After 13 years of a festival-style program that jam-packed one month with temporary public art, we're committing to a yearlong calendar of creativity.
Explore the current program
Saturday 30 January 2016 from 6.30pm to 11pm
Concession: $15.00
More Info


text:
Your Account
Office 2008 for Macintosh: The Missing Manual
by Jim Elferdink
March 2008
Print: $34.99
Ebook: $27.99
iWork '05: The Missing Manual
by Jim Elferdink
September 2005
Print: $29.99
Ebook: $23.99
AppleWorks 6: the Missing Manual
by Jim Elferdink, David Reynolds
May 2000
Print: $19.95
Ebook: $15.99
"The author does a masterful job of showing how to accomplish fundamental tasks in each of the applications, as well as demonstrate how they work together in the Project Center. We found answers to virtually all the questions we had about programs in the suite, as well as useful tips, notes, and figures. There is no better single volume guide. "
--Michael L. Kleper, The Kleper Report on Digital Publishing
"I think that anyone who wants to get the full
value out of their Office 2008 for Macintosh software
purchase must have a copy of Office 2008 for Macintosh: The Missing Manual - even long time users
of Office. I also think that any new Office user
would be lucky to use 10% of its capability without
the book. Talk about improving the return on your
--Roger Bernau, ACT Apple User Group Incorporated
"Anyone who is serious about working with iWork 05 should have this book. While Apple actually does include printed manuals for Pages and Keynote 2 in the shrink-wrapped retail iWork box, they're pretty light on depth and detail, and not really up to the job of helping you get the best of this program...With a list price of $24.95, the book is a bit of a bargain, and also includes 45 days of free trial access to the O'Reilly Network's online Safari Bookshelf, where you can search thousands of top tech books, download whole chapters, cut and paste code samples, and find answers fast."
--Charles Moore, AppleLinks
© 2019, O'Reilly Media, Inc.
(707) 827-7019
(800) 889-8969
All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.


text:
"THE DOTTED CROTCHETS WERE ABSOLUTELY AMAZING – I LITERALLY DON'T HAVE THE WORDS TO TELL YOU HOW WONDERFUL THEY WERE."Kate and Ryan - Wedding, Meols Hall
Looking for a unique wedding string quartet? The Dotted Crotchets String Quartet and Trio can provide beautiful and contemporary live music for your wedding, corporate event or private party. Our huge repertoire list includes a wide variety of classical, jazz, traditional and movie themes, however, our real passion is for performing chart hits, pop classics, rock, indie and heavy metal songs. From recent hits, such as 'Despacito', Ed Sheeran's 'Shape of You' and Clean Bandit's 'Symphony', to something more classic, such as 'All You Need is Love', 'Bohemian Rhapsody' and 'One Day Like This', The Dotted Crotchets have something for everyone, and if your favourite song is not already on the list we can arrange it for you. With musicians based in Manchester, London and Central Scotland we are able to cover weddings and events throughout most of the UK, including Manchester, Liverpool, the Lake District, Cheshire, Leeds, Yorkshire, London, Kent, Sussex, Surrey, Essex, Glasgow, Edinburgh, Perthshire, Aberdeenshire, Tayside and Fife.
The Dotted Crotchets String Quartet and Trio can provide the perfect accompaniment to your wedding ceremony and reception.
Whether it's a birthday party, anniversary meal or a baby's christening, The Dotted Crotchets can provide the soundtrack.
With a 100% success rate so far, our String Quartet and Trio can be booked to serenade the big question.
"YOU GUYS ARE THE BEST BIRTHDAY PRESENT EVER!"Rita Ora - Birthday Party, London


text:
Freaking News
Nine Lives of Morris - pictures
Cats with Bird Flu
"Well, I got a few lives left, but now that I got this here cat flu, I'm gonna use up the remaining lives partying hard!"
5025 days ago
7 comments
high resolution picture
Worried about bird flu. Nah... I've got another beer coming..... Hey, bartender. Where are my smokes.
"We, cats don't get no stinkin' flue, just a hangover"
Honey get me the effin remote will ya....
he went to the CAT HOUSE and got alot of Puss n Hoots before his demise...
luv it but Nyquil goes better with beer.
to comment and participate in contests.
Browse more pictures on the similar topics:
More images from this contest gallery:
Direct image link:
Nine Lives of Morris


text:
adoring 'Blade Runner: The Final Cut' on the big screen
I love DVDs, I love my widescreen TV, I love that the movie experience in my living room just keeps getting better and better. But every once in a while — too rarely, these days — I get a reminder of what we lost when movies came home.
Revivals. I'm just old enough to have seen the last revival houses close in New York City in the early 1990s. I mean, sure, we still have the Film Forum, which shows new prints of old movies, sometimes, and the Landmark Sunshine, which runs cult movies at midnight; mostly, though, those theaters run new indies and foreign films. There used to be theaters that ran nothing but old movies, all the time. (I know it's hard to believe, kiddies, but it's true.) The films didn't need to have been newly remastered, the revivals weren't disguised advertisements for new DVD releases — the movies were just beloved favorites there for fans who wanted to see them again on a big screen.
I saw Blade Runner again on a big screen last Saturday; its limited run in New York and Los Angeles is one of those disguised ads: there are multiple new DVD packages set to release in December, including five-disc package packed with extra material and about two dozen versions of the movie, it seems. For the occasional, director Ridley Scott has created a "Final Cut," which he "wholeheartedly" calls his "definitive director's cut." Apparently it contains added and extended scenes, added lines, and new and improved special effects. I can't honestly say that I particularly noticed anything much different — though Blade Runner is one of my favorite movies, I haven't memorized it. I'd have to watch this Final Cut side by side with the 1992 Director's Cut in order to pick out the differences.
But that's fine. I didn't go looking for that. I just wanted to experience this movie on a big screen again. No matter how big the TV in my living room gets, it can't compare to a flickering image projected onto a hundred-foot screen … and this new Blade Runner, which has indeed been restored and remastered, looks beautiful. All those rich blues and browns and greens almost make 2019 L.A. look luscious rather than grungy, and no matter how fantastic the new DVD set is, and how great my TV is, it will never look so good at home.
And there's no way to replicate the mood of the crowd in that Saturday-night multiplex. Sitting quietly in that packed theater was one of the most reverent audiences I've ever seen a movie with. We weren't there for the surprise of discovering a movie for the first time — or even the second or third time. We were all there to worship at the altar of a film we love. That can't get packaged in a DVD box set.
(Technorati tags: Blade Runner The Final Cut, movie revivals)
Warning: Invalid argument supplied for foreach() in /home/flick/public_html/wptest/wp-content/themes/FlickFilosopher/loop-single.php on line 106


text: Daitermib 2 Report post Posted February 18, 2017 Opened the newest site for finding partners for 1 night ... no texting and other evil spirits, go and find a mate on thenight! Huge number of profiles boys and girls from anywhere on the planet! This not find any 1 portal. http://bit.ly/2kbiro3 2 Tylerhiels and eqeqeqe reacted to this Quote Share this post Link to post Share on other sites