My view is that currently there is a lot
of content on the Internet and the total
is growing quickly. So, there is a need
-- people finding what content they will
like for each of their interests.
My view is that current means
for this need do well on (rough ballpark
guesstimate) about 1/3rd of the content,
searches people want to do, and results
they want to find. My work is for the
"safe for work" parts of the other 2/3rds.
The user interface is really simple; the
user experience should be fun, engaging,
and rewarding. The user interface, data
used, etc. are all very different from
anything else I know about.
The crucial, enabling core of the work,
the "how to do that", the "secret sauce",
is some applied math I derived. It's fair
to say that I used some advanced pure math
prerequisites.
To the users, my solution is just a Web
site. I wrote the code in Microsoft's
Visual Basic .NET 4.0 using ASP.NET for
the Web pages and ADO.NET for the use of
SQL Server.
The monetization is just from ads, at
first with relatively good user
demographics and later with my own ad
targeting math.
The Web pages are elementary HTML and CSS.
I wrote no JavaScript, but Microsoft's
ASP.NET wrote a little for me, maybe for
some cursor positioning or some such.
The Web pages should look fine on anything
from a smart phone to a high end work
station. The pages should be usable in a
window as narrow as 300 pixels. For
smaller screens, the pages have both
horizontal and vertical scroll bars. The
layout is simple, just from HTML tables
and with no DIV elements. The fonts are
comparatively large. The contrast is
high. There are no icons, pull-downs,
pop-ups, roll-overs, overlays, etc. Only
simple HTML links and controls are used.
Users don't log in. There is no use of
cookies. Users are essentially anonymous
and have some of the best privacy. For
the user to enable JavaScript in their Web
browser is optional; the site works fine
without JavaScript -- without JavaScript
maybe sometimes users will have to use
their pointing device to position the
cursor.
There is some code for off-line "batch"
processing of some of the data. The code
for the on-line work is about 24,000
programming language statements in about
100,000 lines of typing. I typed in all
the code with just my favorite text editor
KEdit.
There is a little C code, and otherwise
all the code is in Microsoft's Visual
Basic .NET. This is not the old Visual
Basic 6 or some such (which I never used)
and, instead, is the newer Visual Basic
part of .NET. This newer version appears
to be just a particular flavor of
syntactic sugar and otherwise as good a
way as any to use the .NET classes and the
common language runtime (CLR), that is,
essentially equivalent to C#.
The code appears to run as intended. The
code should have more testing, but so far
I know of no bugs. I intend alpha testing
soon and then a lot of beta testing
announced on Hacker News, AVC.COM, and
Twitter.
For the server farm architecture, there
is a Web server, a Web session state
server, SQL Server, and two servers for
the core applied math and search.
I wrote the session state server using
just TCP/IP socket communications sending
and receiving byte arrays containing
serialized object instances. The core
work of the Web session state server is
from two instances of a standard Microsoft
.NET collection class, hopefully based on
AVL or red-black balanced binary trees or
something equally good.
The Web servers do not have user
affinity: That is, when a user does an
HTTP POST back to the server farm, any of
many parallel Web servers can receive and
process the POST. So, the Web servers are
easily scalable. IIRC, Cisco has a box
that will do load leveling of such
parallel Web servers. Of course, with the
Windows software stack, the Web servers
use Microsoft's Internet Information
Server (IIS). Then IIS starts and runs my
Visual Basic .NET code.
Of course the reason for this lack of user
affinity and easy scalability is the
session state server I wrote. For easy
scalability, it would be easy to run
hundreds of such servers in parallel.
I have a few code changes in mind. One of
them is to replace the Windows facilities
for system logs with my own log server.
For that, I'll just start with my code
for the session state server and
essentially just replace the use of the
collection class instances with a simple
file write statement.
I wrote no prototype code. I wrote no
code intended as only for a "minimum
viable product". So far I see no need to
refactor the code.
The code is awash in internal comments.
For more comments, some long and deep,
external to the code, often there are tree
names in the code to the external
comments, and then one keystroke with my
favorite editor displays the external
comments. I have about 6000 files of
Windows documentation, mostly from MSDN,
and most of the tree names in the comments
are to the HTML files of that
documentation.
I have a little macro that inserts
time-date stamp comments in the code,
e.g.,
Modified at 23:19:07 on Thursday, December 14th, 2017.
and I have some simple editor macros that
let those comment lines serve as keys in
cross references. That helps.
The code I have is intended for production
up to maybe 20 users a second.
For another factor of 10 or 20, there will
have to be some tweaks in some parts of
the code for more scaling, but some of
that scaling functionality is in the code
now.
For some of the data, a solid state drive
(SSD), written maybe once a week and
otherwise essentially read-only, many
thousands of times a day, would do wonders
for users served per second. Several of
the recent 14 TB SSDs could be the core
hardware for a significant business.
Current work is sad -- system management
mud wrestling with apparently an unstable
motherboard. At some effort, I finally
got what appears to be a good backup of
all the files to an external hard disk
with a USB interface. So, that work is
safe.
Now I'm about to plug together another
computer for the rest of the development,
gathering data, etc.
I'm thinking of a last generation
approach, AMD FX series processor, DDR3
ECC main memory, SATA hard disks, USB
ports for DVD, etc., Windows 7
Professional 64 bit, Windows Server, IIS,
and SQL Server.
My view is that currently there is a lot of content on the Internet and the total is growing quickly. So, there is a need -- people finding what content they will like for each of their interests.
My view is that current means for this need do well on (rough ballpark guesstimate) about 1/3rd of the content, searches people want to do, and results they want to find. My work is for the "safe for work" parts of the other 2/3rds.
The user interface is really simple; the user experience should be fun, engaging, and rewarding. The user interface, data used, etc. are all very different from anything else I know about.
The crucial, enabling core of the work, the "how to do that", the "secret sauce", is some applied math I derived. It's fair to say that I used some advanced pure math prerequisites.
To the users, my solution is just a Web site. I wrote the code in Microsoft's Visual Basic .NET 4.0 using ASP.NET for the Web pages and ADO.NET for the use of SQL Server.
The monetization is just from ads, at first with relatively good user demographics and later with my own ad targeting math.
The Web pages are elementary HTML and CSS. I wrote no JavaScript, but Microsoft's ASP.NET wrote a little for me, maybe for some cursor positioning or some such.
The Web pages should look fine on anything from a smart phone to a high end work station. The pages should be usable in a window as narrow as 300 pixels. For smaller screens, the pages have both horizontal and vertical scroll bars. The layout is simple, just from HTML tables and with no DIV elements. The fonts are comparatively large. The contrast is high. There are no icons, pull-downs, pop-ups, roll-overs, overlays, etc. Only simple HTML links and controls are used.
Users don't log in. There is no use of cookies. Users are essentially anonymous and have some of the best privacy. For the user to enable JavaScript in their Web browser is optional; the site works fine without JavaScript -- without JavaScript maybe sometimes users will have to use their pointing device to position the cursor.
There is some code for off-line "batch" processing of some of the data. The code for the on-line work is about 24,000 programming language statements in about 100,000 lines of typing. I typed in all the code with just my favorite text editor KEdit.
There is a little C code, and otherwise all the code is in Microsoft's Visual Basic .NET. This is not the old Visual Basic 6 or some such (which I never used) and, instead, is the newer Visual Basic part of .NET. This newer version appears to be just a particular flavor of syntactic sugar and otherwise as good a way as any to use the .NET classes and the common language runtime (CLR), that is, essentially equivalent to C#.
The code appears to run as intended. The code should have more testing, but so far I know of no bugs. I intend alpha testing soon and then a lot of beta testing announced on Hacker News, AVC.COM, and Twitter.
For the server farm architecture, there is a Web server, a Web session state server, SQL Server, and two servers for the core applied math and search.
I wrote the session state server using just TCP/IP socket communications sending and receiving byte arrays containing serialized object instances. The core work of the Web session state server is from two instances of a standard Microsoft .NET collection class, hopefully based on AVL or red-black balanced binary trees or something equally good.
The Web servers do not have user affinity: That is, when a user does an HTTP POST back to the server farm, any of many parallel Web servers can receive and process the POST. So, the Web servers are easily scalable. IIRC, Cisco has a box that will do load leveling of such parallel Web servers. Of course, with the Windows software stack, the Web servers use Microsoft's Internet Information Server (IIS). Then IIS starts and runs my Visual Basic .NET code.
Of course the reason for this lack of user affinity and easy scalability is the session state server I wrote. For easy scalability, it would be easy to run hundreds of such servers in parallel.
I have a few code changes in mind. One of them is to replace the Windows facilities for system logs with my own log server. For that, I'll just start with my code for the session state server and essentially just replace the use of the collection class instances with a simple file write statement.
I wrote no prototype code. I wrote no code intended as only for a "minimum viable product". So far I see no need to refactor the code.
The code is awash in internal comments. For more comments, some long and deep, external to the code, often there are tree names in the code to the external comments, and then one keystroke with my favorite editor displays the external comments. I have about 6000 files of Windows documentation, mostly from MSDN, and most of the tree names in the comments are to the HTML files of that documentation.
I have a little macro that inserts time-date stamp comments in the code, e.g.,
Modified at 23:19:07 on Thursday, December 14th, 2017.
and I have some simple editor macros that let those comment lines serve as keys in cross references. That helps.
The code I have is intended for production up to maybe 20 users a second.
For another factor of 10 or 20, there will have to be some tweaks in some parts of the code for more scaling, but some of that scaling functionality is in the code now.
For some of the data, a solid state drive (SSD), written maybe once a week and otherwise essentially read-only, many thousands of times a day, would do wonders for users served per second. Several of the recent 14 TB SSDs could be the core hardware for a significant business.
Current work is sad -- system management mud wrestling with apparently an unstable motherboard. At some effort, I finally got what appears to be a good backup of all the files to an external hard disk with a USB interface. So, that work is safe.
Now I'm about to plug together another computer for the rest of the development, gathering data, etc.
I'm thinking of a last generation approach, AMD FX series processor, DDR3 ECC main memory, SATA hard disks, USB ports for DVD, etc., Windows 7 Professional 64 bit, Windows Server, IIS, and SQL Server.