The DashUI program is now moderately useful. It runs cleanly, has a low
overhead, and looks pretty good too.
At this point, it can swallow just about any window, even complex
programs like media players such as Totem. However, one problem that needs
solving is selection of which window to swallow. In programs that have
unpredictable titles, the window cannot be specified in advance. In others,
like gpsdrive, the splash screen gets in the way. Have not decided how to
get around this yet.
From using DashUI with a mouse, it is fairly clear that the solution
would work very well on a touch screen. Large tabs that are always where
they should be, quick switching between applications, and the ability to
swallow anything really work. From here on, it should be mostly cleaning up
the code, as well as adding configuration file parsing.
Yes, I'm Crazy...
I spent most of the day today drilling little window holes in the model of
the Enterprise-D I've owned for the last ten years. All holes are
hand-drilled for good alignment. At four holes per window, my hands are
quite sore. After drilling, the windows are reamed out using a dremel tool
with a dental burr, then the holes are cleaned up with an exacto knife. Once
the inside surface is painted black to protect from light leaks, then silver
to ensure a more uniform distribution of light within, the windows will be
filled with clear resin. A lot of work; hopefully it will pay off. I've seen
some amazing build-ups of this particular model.
In other news, the break still feels fantastic. For Christmas, I got a
2005 Dilbert calendar, as well as the much acclaimed Polar Lights Enterprise
NX-01 model. With the Enterprise-D just started, this one will not be opened
for quite some time. I also went ahead and bought myself a good quality,
full-size replica of the boomerang-shaped phaser from Voyager and DS9;
expensive, but it should be well worth it. Additionally, I just finished
eBay bidding for a decent airbrush compressor. I must be anticipating
graduation or something...
With time well spent on models, decent progress on my fourth year
project, and an astonishing A- mark in Quantum Mechanics, all but one of my
Christmas to-dos have been completed. I still have to clean up the situation
with files from my old desktop, my laptop, and my new desktop. The plan is
to turn the old desktop into a RAID (linux-md) file server, put everything
there, and rsync with it regularly.
] | posted @ 04:04 | link
Beyond a Mock-up
The previously-designed mock-up is now a reality. Written in GTK, with code
borrowed from gnome-swallow, the xeyes program was swallowed
into this preliminary design. The program is actually attached to the tab
pages, so when a tab is switched, the eyes are hidden. They return when the
first tab is once again focused.
There are still many things to work out. The immediate concern is whether
it is possible to have multiple applications swallowed. There is no reason
why this should not be possible, but the current code does interesting
synchronization magic by forking the swallowed program off and then
attempting to control the main program loop. This, obviously, cannot work
with more than one program at a time. At the same time, with a small number
of programs swallowed, perhaps it is not a significant performanceissue to
The step after that is to be able to dynamically specify which programs
belong to which tabs, rather than hard-coding. Related to this is the
ability to set the swallowed applet's size. Currently, the eyes are scaled
to fit the tab content area via command-line argument to xeyes. This
solution is not practical when there is a configuration file, as the size of
the tabs is not known in advance. Since the window identifier of the
swallowed program is known, it would be cleaner to suggest to the program to
resize to given dimensions via an Xlib call after the program is started,
much like a window manager would.
Overall, this design is working out fairly well.
User Interface Idea
Now that exams are over, as are Christmas festivities, I am proceeding
full-steam with producing software I envisioned while studying for exams.
It occurred to me that the flaw in DashPC's design philosophy is that
it's just a launcher. It sits on top of a window manager and launches
applications (and a few other things). What is needed in an automobile is an
interface, something that does not hide behind windows, but rather allows
control over them, and is always available to switch to other programs.
However, it should not be a window manager, as that would have to take
control of any child windows that a program starts, and that is not the
goal. The idea is that child windows are the exception rather than the rule,
and those should be handled by a window manager when they do occur.
The result of my ideas is a tab interface with large, simple tabs on the
driver side of the screen. Tabs can be added or removed from a configuration
file, and each tab corresponds to a different program, always running. The
program corresponding to each tab is held within the tab's content area, as
pictured for gpsdrive (this is only a concept graphic).
The difficulty lies in embedding the program. Several protocols were
considered, including xembed. However, it needs to set up a socket and
communicate with the client program, which would require modification for
each program to be used. Finally, today, I came across gnome-swallow, which
literally swallows any window into its panel window. The whole program is
approximately 500 lines, with 75% of that being the panel code. The
remaining swallow code should be very easily portable to any other GTK
application. If all goes as planned, this means the program will be fairly
trivial to write.
To make things even easier on the user, a high-contrast GTK theme could
be easily designed to make it very clear which tab is selected. This theme
could also enforce larger text, as needed for readability on smaller
screens. I am also thinking of designing a hardware switch that would make
the software automatically tint to a dark green or red when the vehicle's
lights are on. This could be executed right at X11's level via
Exams are over. I feel pretty good about all of them except two: Quantum
Mechanics and Networking. Today, I handed in the final report for the IC
design I've been working with all semester. Now, there is nothing left to
write, nothing left to hand in. There is temporary freedom.
The past week or two has seen interesting weather, from extreme snow
conditions to extreme cold. When the weather is snowy, the lights on the
house glow and create the perfect winter scene. Then there are days like
today, where (with wind factor) the temperature was -41C.
My laptop is being sent back to Dell tomorrow, as the screen problems
that have been intermittent in the past have become permanent, and it is not
pleasant to stare at with lines down the screen. Of course, this happened
two weeks after the warranty expired. Hopefully the repair is not too
costly. Dell parts quoted me $740 + tax + shipping for the motherboard, and
I am quite certain the problem is with the motherboard.
While looking forward to relaxing over the next several days, I've
decided I should resume some small effort on my hobbies. As such, the last
week or so has been spent hand-drilling out windows on the Enterprise-D.
With over a thousand windows, of which I am cutting out about a half, at a
time of three minutes per window... it takes time. But the end result will
look great when it is properly painted and lit. I am considering making it a
goal to spend 20 minutes a day on hobbies next semester, as it effectively
] | posted @ 16:43 | link
This week has been snowy. At night, the snow really catches the light, and
there have been white nights. Not the same effect as a few degrees further
North, where the sun doesn't actually set for very long, but it looks the
same. I managed to take a photo out of my window at 2 a.m. without any
special treatment; it was very bright outside.
At this point, two exams are down, three to go. The first, Software
Engineering, which everyone expected would be impossibly difficult, was
actually fairly straightforward. I feel I did well on it. Today, I had my
Baroque music exam, and it didn't feel as good. 50% of the exam was
identifying music played during the exam, and various facts associated with
those pieces. Then there were two essays; by the time I got to the second
one, my brain was not functioning. This exam was probably not written very
Next up, Quantum Mechanics.
] | posted @ 04:59 | link
The majority of this evening was spent constructing a simple converter that
takes output from the Xbox and converts it into mostly spec VGA.
The Xbox has a video encoder chip that takes the raw digital input and
converts it to (usually) composite video, although it also outputs luminance
and chrominance for S-Video, as well as both current HDTV standards. From a
combination of signals from all of these formats, a VGA signal can be
formed. The problem is that the sync signal for the whole picture is encoded
within the Green channel. This is not VESA-compliant.
The solution to creating a more-or-less VESA compliant signal is to use a
video sync splitter chip. In this case, the National LM1881N was used. The
input to the chip is the Green channel and the outputs are the horizontal
and vertical sync signals, which go directly to pins 13 and 14 on a VGA
While the rest of the PCB is mostly pass-through for the video signals
and their ground lines, there Xbox also outputs audio through the same
connector as video. Therefore, there is a stereo headphone jack, and it
works surprisingly cleanly.
Unfortunately, the video portion of the converter is not ideal. It was
expected from the start that there would be a slight greenish tint, since
the colours are not weighted for VGA display. However, the green tint is
quite heavy wherever other colours are not displayed. Also, there are
occasionally some sync issues. Upon investigating the completed circuit, it
appears that the resistor is approximately half as resistive as it is
supposed to be. Perhaps the resistor is faulty. This may explain some of the
issues, so it will be replaced at some point in the near future.
A So-called "Hectic Life"
It is amazing how slowly November went by. I recall October coming and
going, but November felt easily twice as long. I suppose it could be a
function of how busy I am, but that normally makes time go by faster.
Coinciding with the first day of December was the first spurt of snow, a
modest 10cm. The flakes were the biggest I've ever seen, some were
spheroids with a diameter of about 3cm.
Yesterday was my turn to test the chip I spent a good many hours of
the semester designing. The chip worked great, with very sharp output
signal edges, a signal high very close to 5V, all despite the big gash
someone accidentally put through the middle of the chip. Well, the
scratch isn't very big, considering the total width of the chip is
0.575mm. It is very neat that this nearly random-looking jumble of
zig-zagging lines actually does something interesting. It also brings
into perspective how amazing it is that modern chip designs have
features about 200 times smaller. Craziness. The only remaining step is
to write a big report and it can be called a project.
I am sick. Very sick. I hope to get better before exams.
] | posted @ 04:57 | link
copyright ©2004-2016 pat suwalski