|
If you import a rotated video off of your phone or other device, here is a quick command to rotate it 90 degrees:
mencoder -vf rotate=1 -o hx.avi -oac pcm -ovc lavc hx.mo
|
Some more details are in How to rotate an AVI or MPEG file taken in Portrait.
I was thinking about HP and their decision to get out of the PC market and purchase Autonomy. It makes sense to me. HP can do well in the business information domain.
Domain... information... There are three main domains for information: personal, business, and public. The Internet was primarily used as public after the burst out of universities, military, and scientific use. Now it is just a network that everything is running on. Cloud, B2B, public, private, private in the cloud, public in the cloud, battles for your personal data and how it is used, and data, data, data, "blasting, billowing bursting forth, with the power of ten billion butterfly sneezes". We are mostly fresh to this, you, I, here on the public Internet. We have pictures of family, we see ads, tracked by cookies, as we search for this and that, check our work email, load up another Nina Hagen video, look up a recipe for crunchy caper stew, and "like" our old drunk friend's post about his pug's need for tasty kibbles. We continue to dip in to the private/public world of Facebook. Dip in.
I have been very interested in the personal domain of data. Very personal, behind my eyes only. I've been creating and using journal system that I use to track dreams, memories, subjects, and daily private experience. I'm using it as I go through an incredibly difficult period of my personal life. Like all of us, I've pushed at and considered the edge of public. What do I share? What do I keep private? I don't really do search with my private journal, I trace with tags. One thing I do know for certain: with the proper journal tool, the information and connections that my mind makes are extremely useful. In an appropriate twist, my journal system is a monster creation that nobody I know will likely utilize. It does help me understand the domains, though, as I push at forms of social media expression, varied identities, struggling to share but not share too much. But, back to business and public.
Google is public. Google owns search. If you want to find something that is public, go to Google. Related to my journal, Google is also pushing on open codecs (WebM). We share pictures, we share videos. When you bring business into the mix, there are patents, and patents stifle the public. Some of the most interesting parts of my journal revolve around videos, usually bands playing songs. The conquest of patent issues and opening codecs is the last step to destroying the figure four face lock that businesses have had on the public internet. No longer will you have to own a computer encumbered with DRM and patents. The public world of videos will be freely available on the latest $200 Armdroid tablet... that is if Oracle doesn't get too far on their Java/Droid attack.
This is a song about Alice's restaurant? No! This is about HP and the Business Domain. Businesses are drowning in documents. The public domain is leeching information from businesses, information that shouldn't be out there. Our deeply connected network lets anybody bang on the door, peek in the door, and share what they find. But even more interesting are the documents: internal emails, design diagrams, CEO resignation Microsoft Word documents, 500 versions of some important document passed around as attachments, indexed by every single workstation that ever saw it with desktop search. A new knowledge management system is authorized and planned before the one before the current one even has all of the documents pulled out of the previous system. My point is that within the business domain is a huge possibility for growth. Personal? People will be pulled along by whatever they are told to hold their personal info in, and reassured about it. Retaining and controlling your personal information is a pain in the ass. Perhaps cloud, "people certs", and some strange combination of social media will fill in. Public domain? Nothing there, Google has it, and does it well. Business? Business that is not connected to social/public? Autonomy can do that. How does your business manage data that is doubling every year. How do you keep up with partners? How do you secure and ensure persistence and authority of documents and connected information? There is a huge opportunity for internal search, document management, and governance that is outside of traditional search.
Subject
This article shows how to convert a Rails application to a standard Ruby application, and it shows how to present the data via GTK2. The idea is that a web application and a desktop application can have similar needs, and going back and forth via a common framework has some advantages. We are taking this rails controller and using just the People section from this view and adapting it to GTK2 using Ruby-GNOME2. We are doing this development work on the MCJ GNU/Linux Reference OS version 3.6 with the extra GTK2 packages compiled in as documented in the Reference OS.
This is how the Rails gems and ActiveRecord is set up:
require 'rubygems'
require 'active_support/all'
require 'active_record'
require 'gtk2'
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => "/sources/mcj.rsd"
)
class People < ActiveRecord::Base
set_table_name "peoples"
end
class Realm < ActiveRecord::Base; end
class Art < ActiveRecord::Base; end
class Setting < ActiveRecord::Base; end
|
This is code that is pretty much right out of the Rails application:
$rname = 'l1g'
@realmrow = Realm.find(:first, :conditions=> ["name='"+$rname+"'"])
# People ******************************
@people_distinct = People.find(:all,
:conditions=> ["(
realm='l1g' OR realm='mcjbuildtab1')"],
:select=> "DISTINCT person")
@people_with_person = []
for x in @people_distinct
@people_with_arts = People.find :all,
:conditions=> ["(
person= '"+x.person+"' AND (
realm='mcjbuildtab1' OR realm='l1g'))"]
for y in @people_with_arts
@arts_matching_people = Art.find :all,
:conditions=> ["(
artnum= "+y.artnum.to_s+" AND realm='"+y.realm+"')"]
for z in @arts_matching_people
z.classification=x.person
@people_with_person << z
end
end
end
@people_with_person= @people_with_person.sort_by { |a| [ a.classification, a.date] }
$lastperson="wukkawukka"
@people_with_person_m=[]
for zz in @people_with_person
if zz.classification == $lastperson
zz.classification = ""
else
$lastperson=zz.classification
end
@people_with_person_m << zz
end
|
First we take the @people_with_person_m array and create a GTK list to render:
keyword_list = Gtk::ListStore.new(String, String, String, String)
window = Gtk::Window.new("People Keywords")
window.signal_connect("destroy"){Gtk.main_quit}
person='person'
for ruk in @people_with_person_m
iter=keyword_list.append
iter[0]=person
iter[1]=ruk.classification
iter[2]=ruk.artnum.to_s
iter[3]=ruk.title
person=''
end
|
Now let's populate a GTK::TreeView:
view = Gtk::TreeView.new(keyword_list)
renderer = Gtk::CellRendererText.new
renderer.background="gray"
col = Gtk::TreeViewColumn.new("Keyword Type", renderer, :text => 0)
view.append_column(col)
col = Gtk::TreeViewColumn.new("Keyword", renderer, :text => 1)
view.append_column(col)
col = Gtk::TreeViewColumn.new("Article Number", renderer, :text => 2)
view.append_column(col)
col = Gtk::TreeViewColumn.new("Title", renderer, :text => 3)
view.append_column(col)
vbox = Gtk::VBox.new
vbox.add(view)
window.add(vbox).show_all
Gtk.main
|
The above code can be run by Ruby directly. This is the output:
Recent Entries:
Keywords:
|