Search
Friday, October 7, 2011
Steve Jobs, 1955 - 2011
We at Google were shocked and saddened yesterday to hear about the death of Steve Jobs. Steve's work has inspired and delighted many of us for decades, and we will miss him.
Please read Larry and Sergey's thoughts about Steve Jobs.
Sunday, August 14, 2011
Fridaygram

By Scott Knaster, Google Code Blog Editor
Back in June we launched GoogleCL, an open-source utility that provides command line access to Google services. For our friends who live on the command line and think mice are something cats chase, GoogleCL provides a handy way to perform various tasks, such as posting to Blogger or creating an appointment with Google Calendar. Sample commands look like this:
$ google blogger post --blog 'Lemurland blog' --title 'Latest Madagascar trip' --tags 'vacation, ring-tailed' trip_post.htmlGoogleCL works with various other Google services, providing access to YouTube, Picasa, Docs, and Contacts without having to deal with that pesky graphical user interface. And now, thanks to Google intern Michael Sittig and our APIs Discovery Service, GoogleCL supports all Discovery-based APIs – a list that includes Tasks, Moderator, Books, URL Shortener, and many others. For example, you can use the URL Shortener API to create a new short URL like so:
$ google calendar add 'Order palm tree tomorrow at 10 AM'
$ google urlshortener insert --longUrl www.example.comAs long as our fingers are firmly on the keyboard, let’s talk about words for a moment. The folks who make the Oxford Dictionaries have created Save the Words, a way to preserve wonderful but little-used English words. At Save the Words you can see these words, read their often-hilarious definitions, and agree to use them yourself to help obstrigillate this trend.
Finally, spend a moment taking a look at this article and then ask yourself: have explorers really found the Millennium Falcon at the bottom of the sea? (Spoiler alert: no.)
Even when they cover serious topics like Google APIs and purported spaceship wrecks, Fridaygram posts are just for fun. Each Fridaygram item must pass only one test: it has to be interesting to us nerds.
Cloud Computing: Skytap Orchestrates
It’s automated the order in which users want multi-machine virtual data centers deployed or shut down and engraves those rules – including time delays – in stone so the sequence repeats itself. Like, say, Active Directory server first, followed by the Team Foundation server, the database server, the load balancer and the web servers."
Firefox 6 ist da, Version 8 bringt mehr Kontrolle über Add-ons - heise online
Sunday, August 7, 2011
Preparing for TOGAF Certification
TOGAF 9 Foundation Level Certification – Question set 1
TOGAF 9 Foundation Level Certification – Question set 2
TOGAF 9 Certified Level Certification – Question on topics not available on the study guide
TOGAF 9 Certification Multiple Choice Questions by Chris Eaton
iQuiz – Quick Quiz System "
Book Review: Enterprise Governance and Enterprise Engineering
The book starts out with a nice introduction to the author's point of view regarding Enterprise Engineering and Enterprise Governance.
It then continues with chapters on Mechanistic and Organismic Perspectives on Governance, Enterprise Essentials, System Thinking, Corporate Governance, IT Governance, Enterprise Governance, and The Praxis Illustrated a case study.
One of the things I like most about this book is that it combines corporate governance and IT governance under the Enterprise Governance umbrella. Most larger organizations see IT in a supporting role instead of a strategic ally, which leads to the corporate or business decisions being only partially effective. The business makes their decisions in a bubble that does not provide a realistic view of their true context.
Another thing I really like about this book is that it is an engineering book. Some people may not like that. It lays down the theory as well as the implementation of practices. It is very detailed which at times can make for a difficult read if you aren't used to reading engineering books."
Sunday, July 31, 2011
iPhone 5 will be thinner, wider, and longer than the iPhone 4
5 reasons Google+ is here to stay
Martin Owens: Python List Inheritance Post Creation Pattern
One of the fun things to do with python is to use the language to bend the rules of programming. One neat way of using your resources wisely with objects is to create objects in the right places, but not generate or call costly data gathering operations until you absolutely need to.
So called ‘late data initialisation’ is useful in certain kinds of programs. I document here the best pattern I’ve found to turn a python list into a late data class:
class newList(list):
@property
def data(self):
if self.populate:
self.populate()
return self
def populate(self):
print 'Generating Now'
for x in range(42):
self.append( x )
self.populate = None
def __getitem__(self, key):
return super(newList, self.data).__getitem__(key)
def __len__(self):
return super(newList, self.data).__len__()
def __iter__(self):
return super(newList, self.data).__iter__()
Basically populate can be any piece of code which calls what ever it needs in order to gather the data. It’ll only be called once and to prevent having to use an __init__ variable we just clobber the method attribute. Sneaky!
When the list is used for an iteration (for loop), or if you delve into it directly for a specific item, or need to know it’s length, then we can get the data behind our object and have it contained within the list object we’re inheriting. No need for secondary list object variables dangling off of self. Ugly! Although this pattern does require that every use you want to put the object to (i.e. string, representation, slicing, dicing, mincing or conditionalising) you’ll have to make a new super method to wrap around to make sure that the data is generated if that’s the first way the list will be used.
What are your thoughts about this pattern? Do you know how to fix the init issue with a better pattern?
"Monday, July 4, 2011
Bericht: Facebook bringt Skype-Integration - heise online
USA: LTE-Datenfunk stört GPS-Empfang - heise online
Sunday, June 19, 2011
Geertjan's Blog: Synchronized Property Changes (Part 3)
This time, including a SaveCapability for the Node:
public class ShipNode extends BeanNode implements PropertyChangeListener { private final InstanceContent ic; private final ShipSaveCapability saveCookie; public ShipNode(Ship bean) throws IntrospectionException { this(bean, new InstanceContent()); } public ShipNode(Ship bean, InstanceContent ic) throws IntrospectionException { super(bean, Children.LEAF, new ProxyLookup(new AbstractLookup(ic),
Lookups.singleton(bean))); this.ic = ic; setDisplayName(bean.getType()); setShortDescription(String.valueOf(bean.getYear())); saveCookie = new ShipSaveCapability(bean); bean.addPropertyChangeListener(WeakListeners.propertyChange(this, bean)); } @Override public Action[] getActions(boolean context) { List<? extends Action> shipActions = Utilities.actionsForPath("Actions/Ship"); return shipActions.toArray(new Action[shipActions.size()]); } protected void fire(boolean modified) { if (modified)
{ ic.add(saveCookie); } else { ic.remove(saveCookie); } } private class ShipSaveCapability implements SaveCookie { private final Ship bean; public ShipSaveCapability(Ship bean) { this.bean = bean; } @Override public void save() throws IOException { StatusDisplayer.getDefault().setStatusText("Saving..."); fire(false); } } @Override public boolean canRename() { return true; } @Override public void setName(String s) { Ship c = getLookup().lookup(Ship.class); String oldDisplayName = c.getType();
c.setType(s); fireNameChange(oldDisplayName, s); fire(true); } @Override public String getDisplayName() { Ship c = getLookup().lookup(Ship.class); if (null != c.getType()) { return c.getType(); } return super.getDisplayName(); } @Override public String getShortDescription() { Ship c = getLookup().lookup(Ship.class); if (null != String.valueOf(c.getYear())) { return String.valueOf(c.getYear()); } return super.getShortDescription(); } @Override public void propertyChange(PropertyChangeEvent evt) { if
(evt.getPropertyName().equals("type")) { String oldDisplayName = evt.getOldValue().toString(); String newDisplayName = evt.getNewValue().toString(); fireDisplayNameChange(oldDisplayName, newDisplayName); } else if (evt.getPropertyName().equals("year")) { String oldToolTip = evt.getOldValue().toString(); String newToolTip = evt.getNewValue().toString(); fireShortDescriptionChange(oldToolTip, newToolTip); } fire(true); } }"
NetBeans DZone: Developing Android Apps with NetBeans, Maven, and VirtualBox
KDE Release 4.6.4
Packages for the release of the KDE Software Compilation 4.6.4 are available for Kubuntu 11.04 bringing you new versions of the KDE Platform, Plasma Workspaces and KDE Applications .
Bugs in packaging should be reported to kubuntu-ppa on Launchpad. Bugs in the software to KDE.
Users of 11.04 can install it from the Kubuntu Updates PPA.
"