Blog

Workers' Newspaper of Israel

I have here a 1931 issue of דבר (Latin script: "davar"), עתון פועלי ארץ ישראל (Latin script: "3iton po3alei erets yisra'el"). It was printed in Tel Aviv and was published on Sunday, 10th of May.

DavarDate1

The imprint identifies the English name as "Palestine Labour Daily".

DavarImprint

The day's head article is about recent developments in Egypt.

"Approaching an end of good government"

Davar

Politics in Egypt were apparently as weird and confusing then as they are now.

The article talks about members of the Egyptian Wafd party (which supported independence from England and generally formed the Egyptian governments until the Arab nationalist revolution) and a banned national convention apparently of the "Resistance Front". Lots of names are mentioned including Mohammed Mahmoud (prime minister twice from 1928 to 1929 and from 1937 to 1939), Ahmed Zeiwar (prime minister from 1924 to 1926), and Mustafa el-Nahas (prime minister several times and often for just a few days). Everyone is against everybody else and I cannot figure out what's actually going on. It must have been a lot clearer back in the day or perhaps the "Davar" ("word" or "thing") newspaper is just really weird.

Police dispersed protesters too. It's a mess!

The Jaffa Orange Syndicate

I ran into this old poster from the 1930s.

20180227 212026

I thought it looked familiar. It turns out it's one of the famous posters of of Franz Krausz who created, as I learned, lots of ads for Israel-based products for export and local consumers, creating a new style (most of his posters seem overly dramatic to me) to fit the new Palestinian (Hebrew) culture that was still being created in Israel.

It is interesting that Israelis didn't know much about modern advertising and were not good salespeople but they were, the Wikipedia article says, frugal and didn't pay much for advertising either.

I had never considered this part of the economic aspect of the new culture. All of Krausz' posters are rather colourful. I have to try and find more.

But this poster, behind glass, will look great in my library.

Eretz Yisrael/Palestine passport from 1942

I found an old mandate passport of one Chaim Weiss whom I do not know otherwise. Turns out he was an electrician living in Tel Aviv. The passport was produced in Jerusalem.

WP_20180225_21_00_07_Rich-1 (dragged)


WP_20180225_21_01_27_Rich-1 (dragged)

Chaim was not married.

WP_20180225_21_02_08_Rich-1 (dragged)

And this is what an ordinary ID card looked like.

IMG_0037-1 (dragged)

It belonged to some Mordechai Kushnir.

IMG_0039





Le véritable extrait de viande Liebig

I found this set of Liebig meat extract collectors’ image cards.

It turns out these cards are actually somewhat valuable and thought after, especially this Belgian Israel collection from 1920.

IMG_0049
IMG_0045
IMG_0050
IMG_0046
IMG_0047
IMG_0048
IMG_0044



MyPad

So I bought an iPad.

44

It's an iPad mini 4 with a 7.9" screen, a dual core CPU running at 1.5 GHz, 2 GB RAM, 128 GB SSD, and 4G. It's golden. I use it for reading comic books.

It's rather overpriced for what it can do but there simply were no small Android or Windows tablets available running a current version of their respective OS and with support for the cellphone network.

I called it Abaqus. I already called my Samsung phone Golda. And the iPad looks a bit like an abacus, I thought.

What surprised me was how difficult it is to use. I tried downloading some files from my OneDrive and open them with Chunky, a comic book reader, and couldn't figure out how to do it. Windows and Android are more straightforward, iOS is a bit of a riddle for me.

Apart from that, the device is quite ok. Look at him run.

IMG 0010

I immediately bought a few apps. Some came back from my iPhone days, including Deep Green, a Chess program and a Tintin game (which refused to run because the OS was too new) and some other games (which all refused to run because the OS was too new).

I bought Chunky, an excellent comic book reader, iOS versions of my usual French and Hebrew dictionaries (Ascendo French English Dictionary+ and HEBREW Dictionary Prolog), and Continuous .NET C# and F# IDE (which I had heard about in a podcast). I have yet to use the C# IDE on the iPad. I also installed Microsoft Office for iPad.

All-in-all, as a comic book reader the device is excellent. But as a general purpose tablet computer, it's a bit limited and the compatibility with older games is a joke. As long as I switch between Chunky and the French dictionary and do nothing but read comics and look up words and browse the Web a little, all is well. Once I try to do anything else, the limits are reached and I am grasping for my Android phone or, better yet, my macOS or Windows laptop.

Oh, and I think I like the iBooks application. The bookshelf looks nice. I imported a few ebooks I bought from Packt Publishing. (Some are duplicates because I imported all formats and don't know yet which one iBooks prefers.)

IMG 0013


Update: Abaqus and Citrix

IMG_0066

I created a user account specifically for the iPad. The most annoying feature of Citrix Receiver is that it cannot remember passwords.



פאלעסטינא אין בילד

The Information Control Division either caused or allowed a small publisher near Munich to publish this Yiddish language book in 1946 describing Palestine to Jews who had survived the Shoah and had nowhere to go, their homes either destroyed, overrun by Russians, or simply now "owned" by Germans.

WP 20170617 17 54 32 Rich

Palestine in Picture


Check out this small gallery.

News from the Land, 1919

I found a newspaper from Jerusalem from 1919. In fact it is a British newspaper and it was published as English, Arabic and Hebrew issues during and shortly after World War I to cement British control over the diverse territory. As far as I know it was printed in Cairo. It was later sold to a Jewish publisher.

WP_20170617_17_52_03_Rich

Its price is given in Egyptian currency. It cost 2 Egyptian Grosi. The Hebrew title is "News from the Land". Unfortunately much of the issue I have is really unreadable. I took a picture of the front page which really is the best-kept page.

The newspaper also featured an ad for the Anglo-Egyptian bank which was then a major operation in the region.

22496060 10214524575817059 5782180182252849782 o

The bank was founded in 1864 and is a Limited Company in Hebrew as well as in English.

The list of cities it has branches in is interesting.

London, Gibraltar, Malta (both British outposts), Alexandria, Cairo, Tanta, Mansora, Port Said, Zagazig, Beni Su'ef (all in Egypt), Khartoum (!), Yafo (which was then still larger than Tel Aviv), Jerusalem, and Haifa.


VideoFileSorter

A while ago I write a little program to rename video files ripped off a DVD.

videofilesorter

Try figuring out how it works. Here's a hint.

videofilesorter1

You can use any input that contains the individual new file names (or parts of them) in quotes among further text.

Download it here: VideoFileSorter.msi.zip

VereMolf Rising


VereMolf

A while ago I wrote a few PowerShell scripts that back up my VMware VMs (while they are running or shutting them down, depending on a flag).

I thought for a while that I should write a GUI to control the mechanism as well as binary versions of the backup scripts. The solution is VereMolf, a VMware GUI and backup program.

The problem is that VMware's C# API appears to change very often and I had to start several times. I now have a working prototype that can connect to a VMware host or a vCenter server and display VMs. This was the difficult part. More is to come.

02mainwindow

VereMolf's GUI is WPF-based. It might not look even close to the above in the end.

01mainmenu


password

Servers (currently VMware hosts and vCenter servers, planned is support for Hyper-V and XenServer hosts as well) can be added. VereMolf will ask for a user name and password and whether those should be saved. If they have been saved, VereMolf will fill them in automatically.


03oneserver

My vSphere host Cambyses has been added and can now be queried for VMs.

04getvms


05vms

One of the VMs is a vCenter appliance. It can be promoted to the first level to become a server that can be queried.

06promote

The vCenter appliance is now officially a host.

07twoservers

And its VMs include both the VMs of other hosts associated with the same vCenter as well as templates which exist on associated VMware hosts but are invisible to the hosts themselves.

Currently VereMolf's GUI cannot do much more. The VM named "VereMolf" in the list is the Windows 10 VM the PowerShell version of VereMolf is currently running on. This C# version will eventually replace the PowerShell version.


Saving Credentials in the Credential Manager

One of the best features of Windows is the Remote Desktop Connection software and one of the most annoying features is Windows' inability (or rather unwillingness) to use the current credential (username and password).

EnterYourCredentials

Yes, "Remember me" works. But it means having to type the password again and again for every server one visits and saving it for each server individually. The Remote Desktop client stores the username and password in the Windows Credential Manager.

CredentialManager

It is possible to add a credential to the Credential Manager manually.

PS M:\> cmdkey /add:TERMSRV/telly /user:testuser /pass:password

CMDKEY: Credential added successfully.

PS M:\> cmdkey /list:TERMSRV/telly

Currently stored credentials for TERMSRV/telly:

    Target: TERMSRV/telly
    Type: Domain Password
    User: testuser

Adding to the Credential Manager programmatically is similarly simple.

Using native code, that is.

#include <Windows.h>
#include <wincred.h>

BOOL ok;
int error;

int main()
{
    // credential information
    LPWSTR sTargetName = L"TERMSRV/telly";
    LPWSTR sUserName = L"testuser";
    LPWSTR sPassword = L"password";
    DWORD cbCredentialBlobSize = (DWORD)(wcslen(sPassword) * sizeof(WCHAR));

    // create credential
    CREDENTIAL credential = { 0 };
    credential.Type = CRED_TYPE_DOMAIN_PASSWORD; // 2
    credential.TargetName = sTargetName;
    credential.CredentialBlobSize = cbCredentialBlobSize;
    credential.CredentialBlob = (LPBYTE)sPassword;
    credential.Persist = CRED_PERSIST_ENTERPRISE; // 3
    credential.UserName = sUserName;
    
    // write credential to credential store
    ok = CredWriteW(&credential, 0);
    error = GetLastError();
    wprintf(L"%d\n", error);
    
    return error;
}

It is actually a lot more complicated using managed code. The CREDENTIAL struct has to be rebuilt in managed code and the CredWriteW() API declared. The code is much longer and it is very easy to make mistakes.

using System;
using System.Text;
using System.Runtime.InteropServices;

namespace CreateCredTestManaged
{
    class Program
    {
        static bool ok;
        static int error;

        // credential struct definition as per Windows API
        [StructLayout(LayoutKind.Sequential)]
        struct CREDENTIAL
        {
            public uint Flags;
            public uint Type;
            public IntPtr TargetName;
            public IntPtr Comment;
            public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
            public uint CredentialBlobSize;
            public IntPtr CredentialBlob;
            public uint Persist;
            public uint AttributeCount;
            public IntPtr Attributes;
            public IntPtr TargetAlias;
            public IntPtr UserName;
        }

        // CredWriteW from Windows API
        [DllImport("advapi32")]
        static extern bool CredWriteW(
            ref CREDENTIAL Credential,
            uint Flags
            );

        static void Main(string[] args)
        {
            // credential information
            string sTargetName = "TERMSRV/telly";
            string sUserName = "testuser";
            string sPassword = "password";
            uint cbCredentialBlobSize = (uint)Encoding.Unicode.GetByteCount(sPassword);

            // create credential
            CREDENTIAL credential = new CREDENTIAL {
                Type = 2, // correponds to CRED_TYPE_DOMAIN_PASSWORD
                TargetName = Marshal.StringToCoTaskMemUni(sTargetName), // copies managed into unmanaged memory
                CredentialBlobSize = cbCredentialBlobSize,
                CredentialBlob = Marshal.StringToCoTaskMemUni(sPassword),
                Persist = 3, // corresponds to CRED_PERSIST_ENTERPRISE
                UserName = Marshal.StringToCoTaskMemUni(sUserName)
            };

            ok = CredWriteW(ref credential, 0);
            error = Marshal.GetLastWin32Error(); // corresponds to GetLastError()
            Console.WriteLine(error.ToString());

            Marshal.FreeCoTaskMem(credential.TargetName); // releases bytes allocated in unmanaged memory
            Marshal.FreeCoTaskMem(credential.CredentialBlob);
            Marshal.FreeCoTaskMem(credential.UserName);

            Environment.Exit(error);
        }
    }//class
}//namespace

Both programs create a credential in the Credential Manager like the cmdkey command quoted before does. It took me hours figuring it out...


 © Andrew Brehm 2016