All posts by Nighthawk

Blured reality

Film and movies has progressed, visually, a lot in the past years. Although I kind of stopped watching movies the past decade, I can imaging these changes watching parts of intros from different movies. The making of these movies, has progressed and is progressing a lot as you read these lines.

I am categorizing roughly the types of films as follow:

  1. 2d Animation – At first there was total 2d animation movies (pictures were drawn by hand — frame by frame).
    Examples like the Early Disney classics comes to mind.
  2. Stop motion 3d movies – Made with live characters or animated puppets.
  3. Live actors – Then the there live motion pictures were presented (live human or animal actors created a scene). Won’t exclude there the films made with added layers of drawn or moved puppets.
    Examples of such movies, are wide spread, and not hard to find (yet).
  4. 3d animated movies – Then there was a period of 3d animated picture (3d movies, which were totally created in a virtual world, and animated frame by frame, or using an automatic procedure the software that they were made with enabled).
    Examples such as this can be found from the early Pixar movies.
  5. Now a days – there are commonly pictures that are motion captured facial or full body movement by dressing actors with sensors enabling the 3d objects/characters on the scene to move. This process of course, made much of the work of 3d movies  (mentioned on point 3) redundant. Yet, this combination is hard to define, cause it isn’t exactly live actors nor 3d animated movies — it is the combination between these two that matters. So the question raised on this matter, is whether to consider the actors as actors (if they really had all sensors and dubbed the character).
    Examples of such movies can be taken from Peter Jackson‘s “Lord of the Rings” saga, or from “Avatar“, and many more who uses this technique.

I say no matter what technique you use to create a movie (or how do you define the actors or making), if the result is acceptable… Then so be it.

As I write these lines I raise the following questions:

  1. Thing I thought, is if the back bone of the 3d movie is made good, it is very simple changing one image with another like changing an HTML page image.
  2. What will be the future of these movies technique, is yet to be invented (or in stages toward a new invention).
  3. Would there be an reinvention of the movies, or would it all be interactive computer advance game. In which both motion and plot is flexible for changes.

Circular actions

I started thinking about; how people are running in circles in such way that when they reach the top of the circle they tend to forget the originated point opposite to where they are in the circle (due to lack of resources, or bad memory – for this or that reason), and then their actions tend to lead them back to that opposite point.

It doesn’t matter which resources you would use, the nature is commonly built this way. People who are being alienated to their behavior, tend to be disappointed, or get mad due to this fact.

Then after thinking about this definition, I continued thinking more about it. And came with this definition.

What if, any action will open ALL POSSIBILITIES to you. And without taking out of the equation the starting point – or any points that lead you to the current place – enabling you every moment to get to any of the points in this n graph points you virtually created.

It is easy explaining and picturing that when talking dimentions 2nd, or 3rd, yet 4th (including the element of time), or 5th,  one can go further to the N Dimention as well — would result an extraordinary picture.

Nonetheless, when talking about systems that are based on resources. Whether the resources ;

  1. are physical – such as within element of buildings or gadgets,
  2. or knowledge — whether you would have to dig deep enough in order to find out a solution for a given unknown element, or formula)

– on these occasions… it is a hard task. Due to the simple fact that not always you have all these resources – physical or knowledgeable.

Defining a system that will solve the solution to a user of that sort of system, could be great. How many of us know exactly how a daily used device works. Or how a certain system works. Most of the time, an expertise in one area or another would consume a lifetime of learning, and experimenting with it.

Even experts use shortcuts, in their work – sometime – they just press a magic button that gives them the solution for a given task.

Using a future system by one, would look to the observers in a system that doesn’t know much about the whole as magic. And could produce stories associated with legends, or fairy tales. Yet, these stories are making the readers, watchers or listeners — as part of the same system as well. Opening possibilities to them and empowering them with powers they didn’t know existed within them.

The receivers become a part of the system the transmitter give them. One, most of the time, have the power to decide whether he would like to be a part of that transmitter system. Smart people know how to avoid stepping into systems they dislike.

Microboards

I’ve been thinking for a while now, which one on the micro board to purchase, and play with. Basically microboard are small electronic boards, which you can develop on and build all sort of cool stuff.

There are these main ones on the market these days, which I know of:

  1. Raspberry PiRaspberry Pi Wiki Pages
  2. ArduinoArduino Wiki pages
  3. BBC Micro bitBBC Micro bit Wiki pages
  4. And many more over the globe

The boards got basic connectivity ports (such as usb, power supply port). And you attach to it all sort of electronics (such as led lights, sd card for storage, etc).

You can build all sort of things from these micro boards, such as:

  1. Digital slides show frame
  2. 3d printers – (for example using an arduino board)
  3. Logo turtle bots
  4. Electronic led changing display – (according to audio sound frequencies)
  5. Led text banners

After you understand the basic electronics, you can download (or better else write by yourself)  an application for the board, using the electronics you’ve attached to it.

Every board, got its own software toolkit. Where you can download the SDK to your home computer, most of them got all the available platforms (linux, windows or OSX). The SDK enable you to decide what you would like to run using this gadget you’ve just build.

As for me, I didn’t decide yet, which gadget I would like to build. And which one of all these board possibilities I would like to build it with.

Diving into 3d programming – Supplement (Web)

As I started with some 3d programming on delphi — Another requirement was raised. I needed to port some of the code, to a web based engine.

I recalled that once I played a little with VRML. Yet, after a quick search I found the following 3d WebGL engine called three.js. Due to the fact that I was stunt of the result of it, I decided to post this short supplement to my previous post.

The three.js handles the limitation of processing power on browsers, taking into consideration and a high use of the HTML5 architecture. This opensource package includes many demos, which can be viewed under the link above.

Although the package is (from a very short view), as structured as the delphi glscene. It uses the javascript in a very impressive way.

I’ll post some more notes, after building and using it a little more.

Diving into 3d Programming

Recently I’ve been looking into the area of 3d programming. Here are some few notes from this area of computing.

This area of 3d programming, would serve anyone in the:

  • 3d games programming area — (the directx, and opengl got plenty of code and samples of, for example, preforming character manipulations – character walk, or talk).
  • or in the 3d designing area – such as architects (yet, this area is more likely would use less options available to this 3d environment than a 3d games.
  • Anybody in the 3d animated movies area (unlike the 3d studio tools, for example – these abilities enable one to create a scene for example of a character doing random things – without any special effort).
    Thinking of 3d animated movies, where plenty of tools are being offered. Most of the scenes are usually being defined by the director (for example the ‘lord of the rings’ armies fight – as so on).
    I can think of a whole world, one can create, much like the 13th floor movie. Where the characters  have a life of their own.. And the platform enables them all these daily “random” activities.

When speaking on 3d programming, on windows. There roughly two basic architectures. When using dev environment such as delphi — you can write to both engines seamlessly — while both archtectures enable you to manipulate 3d environment down to detailed variables and features that you would like to achive:

DirectX and Delphi:
To program for that environment I all these, in different times:

  • Delphi FMX — Embarcadero intreduced this crossplatform graphics environment, that got plenty of goodies and abilities.
  • ksDev dxScene — (which later, became the FMX archetecture

OpenGL and Delphi:

  • glScene — an opensource OpenGL environment for use with delphi.

I’ve focused on these two, but I’m sure that looking for other alternatives one can find plenty more. One that I can recall seeing is the: vrmlScene.

—-

Here are some notes, of my first digg into the 3d environment:

I’ve dived into this ocean of shaders (which are virtually effects being done on the 3d model data) and edge detecting techniques, and all these abilities of the graphics manipulations.

After I switched from the dxScene (DirectX) to glScene (opensource opengl libraries), seems that all the searches I’ve made were much more focused. It seems that opengl is much more common than the directx ones. Although all the abilities of the two platforms are somewhat similar.

Anyhow preforming the manipulation programmer wise, got awesome abilities. Though the designated final goal must be well defined.

Here is a sample url of a question about the edges issue,. Which advise a way to preforme the edges.. Another example is this, of displaying wireframe, yet I do not know whether that answer the question as well.

Implementing the shader can be done done, as you see in the examples above, using an opengl c like syntax. OpenGL (as all software) comes in versions flavors,. And using the language in certain syntaxes is valid only for the proper opengl version.

The shader API define parameters to be sent to the rendered application. And it is very dynamic being defined in that way. For example a shader can send only color variable, or can send multiple parameters according the way it was defined by the rendering application.

Another extension of all this process can be done via direct gpu programming using for example the CG (not to be mistaken with CygWin, which is the CPP compiler for windows).

The CG is a CPP compiler for shaders.

Making DumbDisplays smarter with BigData

DumbDisplays: Most of us got a dumb display at home, a dumb display is just another CRT/old LCD display without any implementation of web connectivity or media center connected to it. Most of the new TV displays got a chip built in mostly known as a SmartTV,. What I describe is jumping to the level of a SmartTV — when you have got only a DumbDisplay.

Big Data is just another buzzword… until.. you actually implement it.. Bigdata is any service that aggregates data (whether it be Video/Audio/Text based etc’), stores and dumps it to any of the different media or platforms. Most of the bigdata on the web offer companies a API to their data,. Making the BigData mine-able — via 3rd party software.

Middle Devices – SmartTV: A middle device that is software enabled, and got inport of a web connection, and outport to the display… The connectivity to BigData engines such as FaceBook Graph Search, or Searching Twitter Database, or GPlus Search etc’ — makes the whole strength of the process described.

Of course buying a SettopBox could be an idea, yet I am suggesting a cheap and immediate alternative. What I’ll describe below is only one suggesting, out of many, of boosting your life and accessability to the web.

Steps to go forward, and leap into the era of availability, and web access;

Steps making your TV Smarter:
1. Connect dumb displays to the web, via a local internet connection.

2. Setting requirements to connect old monitors/displays/tvs to the web;
There are verity of ways to do that;

      • Extend existing devices capabilities… for example;
        – use a desktop/laptop computer, that got a port such as rca or hdmi, and defined the target display as just another monitor in your system.
        – use a dongle/mobile device (for example an old ipod, or simmilar type of device) that got the required connectors, and got the required software which will project the web to the screen.
      • Define the type of the middle device connection for example wifi or wired.

3. Pick a proper software which will be;
– configurable on the one hand..
– and on the other hand won’t require any immediate interaction while presenting the data..

Checkout stevie.com which enable you to do so cross platform on any device whether it be iOS, Android or windows devices.
Proper applications will enable you to interact with the ‘dumb’ middle device.. via mobile or with a remote services.

Stevie takes the BigData being mined on the miscellaneous databases which are accessible on the web, and just stream the data to your dumgdisplay screen. Which is virtually creating a personalized channel, which can always be reconfigured according your desires.

BigData associated with the any one of the web social Engines, can create a private channel that will present ‘Your Friends Data’. or even more personally ‘Your Family Data’.

When talking about Data and Channels, I mean it can output, (according to the right software, and quries) — A channel containing personalized;

  • video clips / Audio tracks.
  • pictures slide show.
  • Text news feeds.
  • Or any mix of any of these data types

Technition input on a simple install that went sour

Today I spent almost all day trying to figure out how to install the iTunes on a stubborn windows machine that would not install properly the Apple (loaded) ITunes.

To make a long story short, I came up with the following:

  • Concerning ITunes, (or any other applications that might change the initial state of the machine, with putting values into registry or registering drivers, of one kind or another) make sure you create a system restore point before making any changes to the system. This will enable you to always restore the system — to a state where everything was “clean” before any of installations you are about to preform.
  • The current Apple ITunes has a problem, where it doesn’t register (perfectly on all systems) the IPod/IPad/IPhone… I had to digg into the web in order to see all the comments from other users, where they complained about the same issue. Some of the complains resulted with good ideas of how to solve the issue. Yet, none of them helped on my case.
  • Apple Packed the Current ITunes installation with a variety of different software packages — each has its own roll… Yet, When an error occurs, sometimes, it would be best to separate this big ITunes package into its components — and install only the required component when needed. Below is the list of the current components in ITunes.
  1. AppleApplicationSupport.msi
  2. AppleMobileDeviceSupport64.msi – The drivers and software components that does the connection between ITunes and your devices.
  3. AppleSoftwareUpdate.msi
  4. Bonjour64.msi
  5. iTunes64.msi – The Main ITunes Application

BTW: I’ve separated the file iTunes64Setup.exe using the excellent WinRAR from RAR Labs.

On my case I had to run a couple of times the AppleMobileDeviceSupport64.msi in order to install the drivers (due to the fact that they were registered properly).

BTW:
You can extract each .msi install file, using the following command:
msiexec /a {filename} TARGETDIR=c:\theinstalldirectorysource

  • On today’s tries when installing ITunes — I learned that whenever a major application is being installed faulty — It would be best to enter the windows safemode. And install the software on a  trusted environment (without interference or antiviruses or firewalls definitions).

 

Surrealism and computing

I got  thought running in my mind, about different meaning, or lets say, interpretation of context/stories/text or media — whether it be pictures/movies/sound/audio/video data. Quick googling of the subject resulted, for example,  with these two links:

Multiple Meanings Pictures
Optical Illusions – Double Meanings

Thing is that programming an application that would process a picture… Isn’t that of a small task… Even when thinking of that — it seems a hard process doing.. Thinking and digging even more on the subject — may result with enlightenment on ones life perspective — itself.

We might find out that, on the first place a dogma took its course, as a fact of natural selection. Meaning — was used for one reason or another — and doesn’t even mean what we think it meant, on its initial state.

Surrealism art, usually presents this dilemma. A picture might mean multiple meanings — and processing it can isn’t that straight forward. Surrealist painters painted a picture that might:

  • As said, Mean multiple meanings
  • Seek digging under the current social fabric

Moreover, programming which should be a pinpointed solution and a formula that should be mathematical ‘known’ formula — like 1+1=2 — we might find ourselves programming an application that resulted with an array of possibilities — some that we didn’t even think should or could take place from the input we gave it.

Leading computing into an exotic area — that would combine art and computing. And like a magic solution, could answer and lead to multiple paths down the road.

A little about API & wrappers

API – Application interface
Best way to describe an API, is an interface of a wrapper of some source code. This enables interaction with your code via any third party that would like to use the functionality of what you have programmed.

This enables any third party to treat your code, as a blackbox. Putting some input variables in and getting out from your blackbox a result of a sort.

Of course this result can be visual, or any other data output, that you will later process. On occasions it can be just enabling an activation of a method or a procedure in the wrapper.

Programming language based API
Programming view point, a lot was and would be written. Different language syntax were introduced. And they can be a post for another discussion.

I’ll just note, that the best was to see the wrappers in use cases, is within the Object Orient Programming — whether it be OOP (Object Oriented Pascal), or CPP (C Plus Plus) and Java. Where structures and objects using different procedures/methods/properties was defined. Wrapping source code objects in a defined structures.

The way of structured Object programming that was well defined, was shifted onto different source codes that function as a blackboxed application. When programming the actual code, in different places from within the application different calls are made to existing object and interfacing with them.

Same goes when a service/application requires interaction with the code, yet not within the same source code, but as an external interaction to the objects, data and services of the application.

These requirements resulted with many different products and syntax definitions that could be encountered on many different areas of computing. Here are my notes on these definitions of API.

Winamp API – My First spark of a great code and application design by NULLSOFT
My first encounter of a great API was with the WinAMP media player from NULLSOFT. They designed their application in such a way that any given part of the application could be interacted by any third party — while they enabled the following interface interaction:

  • Input files — Enabling the player to recognize many additional file types, not always the ones that were defined by default.
  • Output Devices – Enabling third party to define new output devices, so that the application will support addition ones other than the default Stero types
  • Filters – Enable different audio filters to be defined,

And so on. They defined the application in such way that the interaction included elements such as a skin style for the GUI of the application, something that until then hasn’t been done in such way.

Microsoft API definitions – By chronological releases
Microsoft initiated a set of wrappers when they found the need to do so, and saw the demand from third party developers. Way back on the early days, when there was the MSDOS, and the first Windows — the definition of wrappers was only in its first stages. In the coming years they defined various types of API wrappers for applications. Here is a short list of some that were defined:

This is a vast area, that was defined by Microsoft — and produced many great subproducts., The introduction of the DDE and COM/DCOM, enabled companies to wrap their product as a defined product, and market it to be used by software developers.

The DCOM, enabled the wrappers to be put on a remote machine and launch their task from that machine. Using a Client/Server programming abilities. Yet, all interface to a DCOM object is, mostly, as if it is a standard COM automation object.

As for the developers they had — when interacting from their code — to the blackboxes — to know the basic structure and method of assigning and mapping their application, with the blackboxes they got. Unifying this ability — produced a vast market that could use different ideas.

Google API
As I see the software market, google initiated a set of API for their products (which were mostly web based) as they learned from the existing companies and tech history.

Google viewed the market from a software developer view point. This enabled them to define the API and different interfaces in a way that will be easy for other software engineers to interact with.

On their developers site, you can find many different API to their product. Due to the fact that they became a huge and dominated company in the market, the list of API is parallel to their products services (search engine, mapping, cloud, office products [documents, spreadsheets, presentations], translate engine, social plus services — the list just getting larger as the time goes on).

Google web orientation, required a definition of the interaction with the different services to be done via the web itself. If the beginning of the API definition was done locally, on a single machine — as interaction better one local application to another local application, that ran on a single computer. –> the definition of the google services was shifted to a web based alike connection between each application. As different application ran on different machines, connected by the internet –> done, usually, as client/server based applications.

The web interaction, required a definition of some sort of structure of when passing parameters to process/or receive — This produced a variety of structures on different layers — as structured data elements (such as XML – Extensible Markup Language, or descended that enhanced it — such as KML – Keyhole Markup Language for mapping services for example) — or different definition  of structured language on the transport layer — (such as communication using JSON JavaScript Object Notation – data structures)…

 

Mobile and cross platform API

When mobiles came to existence, many possibilities and enhancements were introduced.

Today, when any application is written — people who know the market and programming will try to cover the following on their first, or later, releases of the application:

  • A desktop machine application (Whether it be a linux, windows or mac machines)
  • A mobile application (Whether it be an Android, Windows, iOS, or other platforms)
  • A web based application (A web based access to the data or services one provides)

There are many examples of such applications from different companies, that offer their services cross platform on all the above points I’ve mentioned. Again the best place to view such cross platform services, is on google products. Yet examples can be found on many other pinpointed services, such as the services of a Cloud Drive (you can check DropBox, OneDrive, GDrive, and others). Or other services such as EverNote.

A good company will expose their services to an existing ISO defined API, or a unique proprietary API. Again this varies on the company and upon their knowledge that they must produce such a feature so that coders will  act as a leverage to boost their product and services.

The new RAD Delphi XE6 was released

Note, this blog states the obvious.

Again I find myself in the process of waiting/reinstalling the new versions of the miscellaneous components — the I’ve bought. Each company got its own pace of releasing their updated set of components to their subscribers.

Some of them, got a hand of the beta testing of the RAD Delphi, and start to modify their components code, even before the official release of the development environment.

On other cases such as the Delphi Jedi Component Set — The  process seems to be a work in progress all the time. Due to the fact that it is defined as an opensource project. So many bugs, and improvements are being fixed, and added/modified almost everyday.

Yet, nowadays, that there is the Web, and all the social networks such as twitter/linkedin/facebook and so on — It seems that the wealth and variety of the set of libraries I come to find each and everyday, are much  more than what I thought there would be.

So It is good to get updated with many new tools, and utilities. You can call me a compulsive sourcecode collector. And due to the fact that I like the most the OOP with Pascal — I find everyday, new ways of coding in the same language that I happen to grow up with.

I didn’t had the chance yet, to cover all the different modifications that were added to the RAD Delphi XE6 —  itself… Though, I ran a couple of sample demo codes. I’ll be at this in the coming days.