Skip to content

Commit

Permalink
notebook cleaned
Browse files Browse the repository at this point in the history
  • Loading branch information
mtln committed Oct 25, 2024
1 parent 83ded66 commit 53a360c
Showing 1 changed file with 17 additions and 178 deletions.
195 changes: 17 additions & 178 deletions nbs/10_andri.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
},
{
"cell_type": "code",
"execution_count": 23,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -27,18 +27,9 @@
},
{
"cell_type": "code",
"execution_count": 24,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"outputs": [],
"source": [
"#| hide\n",
"#| echo: false\n",
Expand All @@ -48,7 +39,7 @@
},
{
"cell_type": "code",
"execution_count": 25,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -67,7 +58,7 @@
},
{
"cell_type": "code",
"execution_count": 26,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -77,7 +68,7 @@
},
{
"cell_type": "code",
"execution_count": 27,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -87,64 +78,19 @@
},
{
"cell_type": "code",
"execution_count": 28,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"```{dot}\n",
"graph G {\n",
"\"Patient\" [URL=\"andri.html#patient\"]\n",
"\"Teltax\" [URL=\"andri.html#teltax\"]\n",
"\"PublicSecrets\" [URL=\"andri.html#publicsecrets\"]\n",
"}\n",
"```"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"#| echo: false\n",
"display(Markdown(f'```{{dot}}\\n{projects_to_dot(projects)}\\n```'))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"## Patient\n",
"1991 - 1994\n",
"\n",
"\n",
"> Early DOS software for patient management\n",
"\n",
"My first software that was used productively was called 'Patient'. I wrote it as a teenager in Turbo Pascal for my mother, who, in addition to being a housewife, also worked part-time as a self-employed physiotherapist. The DOS application was multicolored and could be operated with a mouse. We had an Intel 80386 DX 20 MHz computer with a 1 GB hard drive and a simple dot-matrix printer. With my patient management software, one could not only schedule appointments and do the accounting, but also directly fill out the yellow forms that had to be submitted to the disability insurance (IV) for billing. At the time, my mother was probably the only physiotherapist who sent forms to the insurance not handwritten but neatly filled out by a printer 😀. \n",
"\n",
" ![Patient menu screenshot](patient1.jpg) \n",
"\n",
"The completely exaggerated title 'Physikalisch-Therapeutisches Institut Ruth Krämer & Co.' was, of course, meant as a family insider joke. \n",
"\n",
" ![Patient detail screenshot](patient2.jpg)\n",
"\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"#| echo: false\n",
"if i < len(projects):\n",
Expand All @@ -154,33 +100,9 @@
},
{
"cell_type": "code",
"execution_count": 30,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"## Teltax\n",
"1995 - 1999\n",
"\n",
"\n",
"> Dial-In modem costs calculator and splitter\n",
"\n",
"To access the internet back then, you had to dial in via a modem over the phone line. There was a basic charge for establishing the connection and a per-minute fee with three different time-based pricing levels. Internet costs could quickly become very high, and if you lived in a shared apartment or worked remotely for an employer, you needed to know for each 'internet session' when it happened, how long it lasted, and who would be responsible for paying at the end of the month.\n",
"\n",
"That's exactly why I wrote Teltax. It was activated each time a modem connection ended, allowing you to specify whose account the costs should be charged to. The details were read from the technical log of the Win95 modem driver (e.g., `c:\\win95\\ModemLog_Zeus 336E External 33600 Fax Modem.txt`). Then, the costs were calculated based on the three different price levels and written into a log file. At the end of the billing period, a total cost per user was calculated. Additionally, the data volume was analyzed, and the cost per megabyte was calculated. Since charges were based on time rather than data volume back then, the goal was, of course, to keep the cost per megabyte as low as possible by truly using the connection and not keeping it open for too long.\n",
"\n",
" ![Teltax summary screenshot](teltax1.jpg)\n",
"\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"#| echo: false\n",
"if i < len(projects):\n",
Expand All @@ -190,80 +112,9 @@
},
{
"cell_type": "code",
"execution_count": 31,
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"## PublicSecrets\n",
"1997 - 2007\n",
"\n",
"\n",
"> The _really_ social network before social networks\n",
"\n",
"The World Wide Web was still in its infancy. There was no Google, no PHP, no WordPress, and no Facebook. But there was PublicSecrets—a blend of social networking and productivity platform. I began developing PublicSecrets in 1997 and continued to expand it over the years. It was used by all of my friends and even friends of friends\n",
"\n",
"### Features\n",
"\n",
"OpenAlbum\n",
": Put your photos online. Select from different style templates. Decide whether the album should be public, restricted to PublicSecrets users, restricted to your friends, to a list of friends or private ('secret'). Create slideshows. Get user comments. Add 'order picture' button (for print orders) and even use an album as gift list for weddings or birthdays (add 'I give this to you as a present' button that disappears when somebody has already clicked it). OpenAlbum provides detailed access statistics. \n",
"\n",
": Years later, similar services such as Picasa (acquired by Google in 2004) were launched.\n",
"\n",
"Address Book\n",
": Add entries and decide which of your friends you want to share each entry with. Duplicates are actively avoided: If you add an address that a friend has already added, you'll gain access to the existing record instead of creating a duplicate. All friends have read and write access to shared records, ensuring that the data remains well-maintained and up-to-date. You’ll never forget a friend's birthday, as PublicSecrets sends you email reminders and displays a list of upcoming birthdays after you log in. Addresses can also be grouped into address lists.\n",
"\n",
"Bookmarks\n",
": Individual bookmarks / links can be shared and grouped hierarchically. The bookmark check tool reports invalid/outdated bookmarks.\n",
"\n",
"![PublicSecrets Bookmarks screenshot. btw: the color theme was customizable...](publicsecrets1.jpg)\n",
"\n",
"Notes\n",
": Manage your personal notes.\n",
"\n",
"PSMail\n",
": PublicSecrets Mail is a webmail client allowing you to create new mail accounts or registering existing (third-party) e-mail accounts. It provides full text search capabilities, shared e-mail accounts, aliases, mailing list management, virus scanning, spam filtering and folders. \n",
"\n",
": PSMail was available long before Gmail or Yahoo Mail.\n",
"\n",
"PSFile\n",
": Files can be shared with other PublicSecrets users. All uploads are scanned for viruses. Files can be encrypted using individual passphrases. PSFiles can also be attached to PSMail messages.\n",
"\n",
": The PSFile cloud file store was already available when the word 'cloud' had no other meaning and there was no Google Drive, Dropbox or Microsoft OneDrive.\n",
"\n",
"PSEvent\n",
": For the legendary Würstli Wednesday events, I built a somewhat sophisticated event management system into PublicSecrets. It works like this: You can define a new event in PS, including a description, date, time, etc. Afterwards, you add items (e.g., beer, potato chips, potato salad) to the event and determine how many participants are needed per item (e.g., potato chips for every 3 participants, potato salad for every 10 participants, etc.).\n",
"Using the PS address book, you can invite guests and send them an invitation via PSMail. On the event homepage, guests can sign up or opt-out. For events with gadgets, each guest can see which gadgets are currently needed and select which one(s) they would like to bring themselves. All guests can see who has signed up or opted out and who is bringing what. The ultimate tool for \"self-organizing parties\".\n",
"\n",
"PSAccounting\n",
": Create a cash book, assign people from your address book as members and start your shared accounting. Each entry has a date, an amount, a member involved as creditor and one or more involved as debtors. At each moment, any member can see the current total of expenses and debts and how much who would have to pay to whom in order to re-balance the account (pay off all debts with the smallest number of transactions).\n",
": This was exactly what later became popular with apps like Splittr - but years before the iPhone was invented.\n",
"\n",
"PSDocs\n",
": Upload any zipped documentation. It gets unzipped and indexed by the built-in full-text search engine.\n",
": The best thing, software develpers could dream of at that time to quickly browse JavaDocs etc.\n",
"\n",
"PS GarbageAlert\n",
": Reminds you of the waste paper or cardboard collection dates for the district you live in. Only for Zurich.\n",
"\n",
": Years later, ERZ (Entsorgung + Recycling Zürich) came up with a similar service.\n",
"\n",
"PSVote\n",
": Ideas for extensions are proposed here and all users can vote on them.\n",
"\n",
"PublicSecrets was written in ColdFusion and ran on a Windows NT server.\n",
"\n",
"\n"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"#| echo: false\n",
"if i < len(projects):\n",
Expand All @@ -273,7 +124,7 @@
},
{
"cell_type": "code",
"execution_count": 32,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -285,7 +136,7 @@
},
{
"cell_type": "code",
"execution_count": 33,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -303,21 +154,9 @@
],
"metadata": {
"kernelspec": {
"display_name": "venv",
"display_name": "python3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.6"
}
},
"nbformat": 4,
Expand Down

0 comments on commit 53a360c

Please sign in to comment.