• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 08:55
CET 14:55
KST 22:55
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
RSL Revival - 2025 Season Finals Preview8RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12
Community News
[BSL21] Non-Korean Championship - Starts Jan 100SC2 All-Star Invitational: Jan 17-1819Weekly Cups (Dec 22-28): Classic & MaxPax win, Percival surprises2Weekly Cups (Dec 15-21): Classic wins big, MaxPax & Clem take weeklies3ComeBackTV's documentary on Byun's Career !11
StarCraft 2
General
SC2 All-Star Invitational: Jan 17-18 Weekly Cups (Dec 22-28): Classic & MaxPax win, Percival surprises Chinese SC2 server to reopen; live all-star event in Hangzhou Starcraft 2 Zerg Coach ComeBackTV's documentary on Byun's Career !
Tourneys
OSC Season 13 World Championship WardiTV Mondays $5,000+ WardiTV 2025 Championship $100 Prize Pool - Winter Warp Gate Masters Showdow Sparkling Tuna Cup - Weekly Open Tournament
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 506 Warp Zone Mutation # 505 Rise From Ashes Mutation # 504 Retribution Mutation # 503 Fowl Play
Brood War
General
StarCraft & BroodWar Campaign Speedrun Quest A cwal.gg Extension - Easily keep track of anyone I would like to say something about StarCraft BGH Auto Balance -> http://bghmmr.eu/ (UMS) SWITCHEROO *New* /Destination Edit/
Tourneys
SLON Grand Finals – Season 2 [BSL21] Non-Korean Championship - Starts Jan 10 [Megathread] Daily Proleagues [BSL21] Grand Finals - Sunday 21:00 CET
Strategy
Simple Questions, Simple Answers Current Meta [G] How to get started on ladder as a new Z player Fighting Spirit mining rates
Other Games
General Games
General RTS Discussion Thread Nintendo Switch Thread Awesome Games Done Quick 2026! Stormgate/Frost Giant Megathread Mechabellum
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas Survivor II: The Amazon Sengoku Mafia
Community
General
Russo-Ukrainian War Thread US Politics Mega-thread Canadian Politics Mega-thread The Games Industry And ATVI 12 Days of Starcraft
Fan Clubs
White-Ra Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece
Sports
2024 - 2026 Football Thread Formula 1 Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List TL+ Announced
Blogs
National Diversity: A Challe…
TrAiDoS
I decided to write a webnov…
DjKniteX
James Bond movies ranking - pa…
Topin
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1723 users

The Big Programming Thread - Page 700

Forum Index > General Forum
Post a Reply
Prev 1 698 699 700 701 702 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
RoyGBiv_13
Profile Blog Joined August 2010
United States1275 Posts
Last Edited: 2016-01-07 22:32:50
January 07 2016 22:32 GMT
#13981
On January 08 2016 07:15 emperorchampion wrote:

- Try to replace loops with indexing, much faster and easier, loops should be the last option imo, built in functions or index are the way to go


If you ignore all other advice, heed this. In the short run, it will merely make your code shorter and easier to read. In the long run, MATLAB functions tend to start taking days or weeks after the scope starts getting out of control, so thinking in terms of speed of computation early means you do not have to relearn MATLAB at a later point.
Any sufficiently advanced technology is indistinguishable from magic
solidbebe
Profile Blog Joined November 2010
Netherlands4921 Posts
Last Edited: 2016-01-07 23:48:47
January 07 2016 23:48 GMT
#13982
Another +1 for avoiding loops. Almost anytime you are tempted to use a loop in matlab, theres some matrix operation which is 1000x faster, is cleaner code, and makes you look more pro.
That's the 2nd time in a week I've seen someone sig a quote from this GD and I have never witnessed a sig quote happen in my TL history ever before. -Najda
tofucake
Profile Blog Joined October 2009
Hyrule19186 Posts
January 08 2016 01:04 GMT
#13983
On January 08 2016 07:02 Manit0u wrote:
Show nested quote +
On January 08 2016 06:36 travis wrote:
I already read that. I think I get a grasp of how it works, for the most part. And why, for the most part. I just don't see the advantage of doing it this way instead of just having a keyword. It actually seems like it's making it more complicated instead of less, which is something I haven't seen in python so far.

Maybe this is a question I will need to ask myself in 6 months.


You think this is complicated? PHP has both self and this. And in JavaScript you often see stuff like that:


var self = this;


Try figuring those out

Edit:
Not for the faint of heart: http://alistapart.com/article/getoutbindingsituations

self for static and this for objective

bam
Liquipediaasante sana squash banana
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
January 08 2016 15:43 GMT
#13984
here's a question
why do people bother with programs like bootstrap
why is that better than just writing your html/css yourself? Or is there something more that it does ?
solidbebe
Profile Blog Joined November 2010
Netherlands4921 Posts
January 08 2016 15:49 GMT
#13985
Usually just provides a lot of out of the box functionality without having to do much work, it'll get you results faster than figuring everything out yourself.
That's the 2nd time in a week I've seen someone sig a quote from this GD and I have never witnessed a sig quote happen in my TL history ever before. -Najda
tofucake
Profile Blog Joined October 2009
Hyrule19186 Posts
January 08 2016 16:16 GMT
#13986
We use bootstrap at my work because it let's us do styling well but quickly, and we can spend more time on the actual business logic and implementing new functionality.
Liquipediaasante sana squash banana
Deleted User 3420
Profile Blog Joined May 2003
24492 Posts
January 08 2016 16:44 GMT
#13987
I have read several posts that say that unless you put in the extra work to customize the code, "all bootstrap sites look the same". Is there any truth to that?
Manit0u
Profile Blog Joined August 2004
Poland17557 Posts
Last Edited: 2016-01-08 17:16:29
January 08 2016 16:49 GMT
#13988
Things like bootstrap and jQuery are useful because of many reasons:

1. Uniform way of styling/scripting across projects.
2. Lots of help available online.
3. Lets you avoid a lot of tarpits (mainly cross-browser functionality and legacy browser support). Also, since they're so popular they've been tested extensively and already fixed stuff you didn't even know could be a problem.
4. Easier to find new people for the project (higher chance of finding someone who has already worked with those frameworks than someone who'll pick up your own stuff quickly enough without applying additional burden to the rest of the team).
5. Huge number of "out-of-the-box" features.

Just to name a few.

Although we're currently debating switching from bootstrap to foundation all of the above still applies.

Here's a brief tutorial on how grid frameworks work (and why people use them to develop front-end fast across mobile and desktop):

Time is precious. Waste it wisely.
tofucake
Profile Blog Joined October 2009
Hyrule19186 Posts
January 08 2016 18:06 GMT
#13989
On January 09 2016 01:44 travis wrote:
I have read several posts that say that unless you put in the extra work to customize the code, "all bootstrap sites look the same". Is there any truth to that?

Yeah, basic bootstrap sites have very common appearances, but it's really simple to customize too.
Liquipediaasante sana squash banana
Manit0u
Profile Blog Joined August 2004
Poland17557 Posts
January 08 2016 18:33 GMT
#13990
On January 09 2016 03:06 tofucake wrote:
Show nested quote +
On January 09 2016 01:44 travis wrote:
I have read several posts that say that unless you put in the extra work to customize the code, "all bootstrap sites look the same". Is there any truth to that?

Yeah, basic bootstrap sites have very common appearances, but it's really simple to customize too.


There's actually nothing wrong with that. The design is simple yet good looking so even the sites with basic bootstrap look well. Also, it's good for the UX since the users get accustomed to the elements, don't have to look for things and instantly know what's what.

Anyway, like it was mentioned, it's really easy to customize bootstrap to suit your needs (you can even do it on their website and download already modified code). You can get all the matching colors and proper stuff here and use it to make a really nice looking layout with bootstrap.
Time is precious. Waste it wisely.
myRZeth
Profile Joined June 2011
Germany1047 Posts
January 08 2016 18:37 GMT
#13991
Is there anyone in here who programs in Racket?

I'd appreciate a PM if yes.

Thanks, awesome community.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
January 09 2016 07:12 GMT
#13992
Might be a bit off topic or at least tangential, but does anyone have any ideas about marketing a website to letsplayers and letsplay viewers?

I've launched my private project LetsPlayDB into essentially open beta yesterday, but I'm still unsure on how to get the initial boost I need to take off. Without letsplayers, people won't bother to search. Without people to search, letsplayers won't sign up. I've posted it to /r/letsplay and got a few channels to sign up, but by far not enough.

For those interested, the website is done in Node.JS using Express - my first ever Node.JS project. Backend is MongoDB, also a first for me. Frontend is of course using bootstrap, since I'm not a webdesigner, and a tiny bit of AngularJS - not a huge fan of AngularJS so far, it seems to be the same as jquery ui widgets, just with added syntax, but it seems to do it's job.
sabas123
Profile Blog Joined December 2010
Netherlands3122 Posts
January 10 2016 19:44 GMT
#13993
After a full weekend of learning openGL my brain is fried after trying to understand how all of this works.
The harder it becomes, the more you should focus on the basics.
Manit0u
Profile Blog Joined August 2004
Poland17557 Posts
Last Edited: 2016-01-10 21:25:22
January 10 2016 21:24 GMT
#13994
On January 09 2016 16:12 Morfildur wrote:
Might be a bit off topic or at least tangential, but does anyone have any ideas about marketing a website to letsplayers and letsplay viewers?

I've launched my private project LetsPlayDB into essentially open beta yesterday, but I'm still unsure on how to get the initial boost I need to take off. Without letsplayers, people won't bother to search. Without people to search, letsplayers won't sign up. I've posted it to /r/letsplay and got a few channels to sign up, but by far not enough.

For those interested, the website is done in Node.JS using Express - my first ever Node.JS project. Backend is MongoDB, also a first for me. Frontend is of course using bootstrap, since I'm not a webdesigner, and a tiny bit of AngularJS - not a huge fan of AngularJS so far, it seems to be the same as jquery ui widgets, just with added syntax, but it seems to do it's job.


Angular starts to shine when you have a 2-system setup. Where one system has the primary db and does all the heavy lifting but doesn't really have a front and the other one only has db containing some user data and very basic controllers and is nothing more than a front where you use angular to display stuff you get from the other system.

This is actually pretty neat for front/back-end separation and it much reduces the load on your system (since the back-end stuff is set up to only receive json and only from ip's where your front-facing systems reside). All the front-facing systems really do is send request to the back-end system, get json in response and use angular to display it. Additional security is nice too.
Time is precious. Waste it wisely.
tofucake
Profile Blog Joined October 2009
Hyrule19186 Posts
January 12 2016 01:59 GMT
#13995
So last week we got the green light to start fresh with the new version of our website, and today we had a database design meeting. I'm excited that we are moving from a heavily modded and unupgradable CakePHP 1.something, weird ajax, some sort of Symfony, bootstrap AND random SASS, jQuery, and PHP 5.3 all run on composer and compass to Symfony 3, PHP7, AdminLTE/Bootstrap, bower/gulp, and maybe nginx.

The admin section of prod alone is a nightmare to debug, as the way it's setup is such that all debugging is a pain (tail -F /var/log/httpd/error_log) and called pages cannot execute JS, which means all the control JS needs to be in the calling document, not the return result. It's so dumb how it's currently done.

Add to that the fact that we outsourced the development of the mobile site to another company and they royally fucked it up, and what we get is a very happy team of developers. Going through the DB today and saying "yes we can axe this 13gb table" was awesome.
Liquipediaasante sana squash banana
Manit0u
Profile Blog Joined August 2004
Poland17557 Posts
Last Edited: 2016-01-12 04:57:59
January 12 2016 04:57 GMT
#13996
On January 12 2016 10:59 tofucake wrote:
So last week we got the green light to start fresh with the new version of our website, and today we had a database design meeting. I'm excited that we are moving from a heavily modded and unupgradable CakePHP 1.something, weird ajax, some sort of Symfony, bootstrap AND random SASS, jQuery, and PHP 5.3 all run on composer and compass to Symfony 3, PHP7, AdminLTE/Bootstrap, bower/gulp, and maybe nginx.

The admin section of prod alone is a nightmare to debug, as the way it's setup is such that all debugging is a pain (tail -F /var/log/httpd/error_log) and called pages cannot execute JS, which means all the control JS needs to be in the calling document, not the return result. It's so dumb how it's currently done.

Add to that the fact that we outsourced the development of the mobile site to another company and they royally fucked it up, and what we get is a very happy team of developers. Going through the DB today and saying "yes we can axe this 13gb table" was awesome.


That's cool. Let me know if you need any help with Symfony. For a year now most of the projects our company is doing are in Symfony 2.7+ and PHP 5.5+. It's a pleasure to work with it.
Time is precious. Waste it wisely.
coolprogrammingstuff
Profile Joined December 2015
906 Posts
January 12 2016 09:18 GMT
#13997
On January 08 2016 05:50 travis wrote:
I have a couple questions about the commonly seen "self" parameter in python

It seems to have the same purpose as "this" in java. except from what I read, self isn't actually a keyword, so it can be anything

so a couple questions I have - is this parameter required in all methods you write in python?
is this parameter basically just saying "from now on this is how this method can refer to itself"
and finally - why? why not just use "this" like in java?


It is convention. You can use "this" all you like, but it'd be bad practice in python.

Python didn't just use "self" to be cool to distinguish itself from java -some OO languages use this, others self. This deviates all the way back to two of the first OO programming languages - Simula (this), smalltalk (self). A bit more complicated than that, and I'm not too knowledgable about it either, but yeah!
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2016-01-12 10:39:18
January 12 2016 10:38 GMT
#13998
On January 12 2016 10:59 tofucake wrote:
So last week we got the green light to start fresh with the new version of our website, and today we had a database design meeting. I'm excited that we are moving from a heavily modded and unupgradable CakePHP 1.something, weird ajax, some sort of Symfony, bootstrap AND random SASS, jQuery, and PHP 5.3 all run on composer and compass to Symfony 3, PHP7, AdminLTE/Bootstrap, bower/gulp, and maybe nginx.

The admin section of prod alone is a nightmare to debug, as the way it's setup is such that all debugging is a pain (tail -F /var/log/httpd/error_log) and called pages cannot execute JS, which means all the control JS needs to be in the calling document, not the return result. It's so dumb how it's currently done.

Add to that the fact that we outsourced the development of the mobile site to another company and they royally fucked it up, and what we get is a very happy team of developers. Going through the DB today and saying "yes we can axe this 13gb table" was awesome.


Been there, done that. End product was worse than the previous product.

In my previous company we wanted to move away from the old frontend, which was essentially entirely custom made. The new project was supposed to be all OOP, SOA, TDD and stuff. I was only involved in the latter parts of the rework, but essentially the new website was slow as hell, the structure was even more confusing since everything was configurable and the UI that was supposed to be identical to the old ended up much less userfriendly. The rework too 6 developers about a full year, if not a bit more, and for me the final product was unacceptable with page loading speeds in the range of one second for the simpler pages - after the extended 10 person team, the part where I got involved, spent two weeks optimizing everything, apart from the underlying Kohana framework which we weren't allowed to fix as to maintain compatibility to future updates.

I switched to my current company, for which I worked a few years back, on the promise of scrapping the old websites and creating something new. The old pages were basically procedural with all the functions in a file literally called functions.php. I came in when the one developer plus two student assistants already laid most of the foundation and I mostly had to add some of the more complex stuff like payment connectors and such. The new product is using zend framework 2 running on the azure cloud with lots of factories and stuff - and it's ugly, slow (page loading speed of 2s and more) and big parts of the code are huge messes. Launch is on the first of February and I wouldn't use the product in it's current state even if the stuff we're selling was free.

I think scrapping old stuff and creating it anew is overrated.
It's fun though, I do it with my private projects all the time, which is one reason why 99% of them never see the light of day.
berated-
Profile Blog Joined February 2007
United States1134 Posts
January 12 2016 16:19 GMT
#13999
On January 12 2016 19:38 Morfildur wrote:
Show nested quote +
On January 12 2016 10:59 tofucake wrote:
So last week we got the green light to start fresh with the new version of our website, and today we had a database design meeting. I'm excited that we are moving from a heavily modded and unupgradable CakePHP 1.something, weird ajax, some sort of Symfony, bootstrap AND random SASS, jQuery, and PHP 5.3 all run on composer and compass to Symfony 3, PHP7, AdminLTE/Bootstrap, bower/gulp, and maybe nginx.

The admin section of prod alone is a nightmare to debug, as the way it's setup is such that all debugging is a pain (tail -F /var/log/httpd/error_log) and called pages cannot execute JS, which means all the control JS needs to be in the calling document, not the return result. It's so dumb how it's currently done.

Add to that the fact that we outsourced the development of the mobile site to another company and they royally fucked it up, and what we get is a very happy team of developers. Going through the DB today and saying "yes we can axe this 13gb table" was awesome.


Been there, done that. End product was worse than the previous product.

In my previous company we wanted to move away from the old frontend, which was essentially entirely custom made. The new project was supposed to be all OOP, SOA, TDD and stuff. I was only involved in the latter parts of the rework, but essentially the new website was slow as hell, the structure was even more confusing since everything was configurable and the UI that was supposed to be identical to the old ended up much less userfriendly. The rework too 6 developers about a full year, if not a bit more, and for me the final product was unacceptable with page loading speeds in the range of one second for the simpler pages - after the extended 10 person team, the part where I got involved, spent two weeks optimizing everything, apart from the underlying Kohana framework which we weren't allowed to fix as to maintain compatibility to future updates.

I switched to my current company, for which I worked a few years back, on the promise of scrapping the old websites and creating something new. The old pages were basically procedural with all the functions in a file literally called functions.php. I came in when the one developer plus two student assistants already laid most of the foundation and I mostly had to add some of the more complex stuff like payment connectors and such. The new product is using zend framework 2 running on the azure cloud with lots of factories and stuff - and it's ugly, slow (page loading speed of 2s and more) and big parts of the code are huge messes. Launch is on the first of February and I wouldn't use the product in it's current state even if the stuff we're selling was free.

I think scrapping old stuff and creating it anew is overrated.
It's fun though, I do it with my private projects all the time, which is one reason why 99% of them never see the light of day.


+1 - rewrites are definitely.. interesting.

The problem I have with them most of the time is the fallacy that it will be easier to understand, combined with the failure to understand the current product. If you can't dive in and figure out the current one, I've never been quite certain how one thinks they will rewrite it and get it correct.
mTwRINE
Profile Joined February 2006
Germany318 Posts
January 12 2016 17:25 GMT
#14000
On January 09 2016 16:12 Morfildur wrote:
For those interested, the website is done in Node.JS using Express - my first ever Node.JS project. Backend is MongoDB, also a first for me. Frontend is of course using bootstrap, since I'm not a webdesigner, and a tiny bit of AngularJS - not a huge fan of AngularJS so far, it seems to be the same as jquery ui widgets, just with added syntax, but it seems to do it's job.


You are not using any Angular features (directives like ng-repeat, ng-model for example). Right now its just a container for standard jQuery. See “Thinking in AngularJS” if I have a jQuery background?
As you said it does its job, but if you want some input on how to get there, I could give you some pointers.
Prev 1 698 699 700 701 702 1032 Next
Please log in or register to reply.
Live Events Refresh
Platinum Heroes Events
13:00
PSC2L Finals - Playoffs
Percival vs NicoractLIVE!
NightMare vs Jumy
Krystianer vs Creator
Shameless vs Gerald
RotterdaM681
Liquipedia
OSC
13:00
World Championship: Challenger
WardiTV498
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RotterdaM 681
Lowko379
StarCraft: Brood War
Horang2 2526
PianO 1493
Jaedong 1449
EffOrt 793
Shuttle 579
Stork 543
Larva 511
Mini 410
actioN 370
Soma 353
[ Show more ]
ZerO 218
Light 211
Hyuk 205
ggaemo 193
firebathero 183
hero 176
Snow 150
Sharp 145
Killer 107
Rush 107
Pusan 96
Barracks 90
sorry 88
Hyun 86
JYJ 59
Mong 48
ToSsGirL 45
Sea.KH 40
yabsab 29
Terrorterran 23
soO 20
HiyA 18
ajuk12(nOOB) 17
zelot 17
Rock 15
scan(afreeca) 13
Noble 12
GoRush 12
Sacsri 11
Shine 8
Dota 2
qojqva1902
syndereN662
League of Legends
C9.Mang0503
Counter-Strike
x6flipin951
Other Games
B2W.Neo1822
Gorgc452
hiko370
Fuzer 286
Pyrionflax181
Hui .84
Grubby52
ZerO(Twitch)12
Organizations
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 12 non-featured ]
StarCraft 2
• Adnapsc2 26
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Jankos3168
Upcoming Events
Korean StarCraft League
13h 5m
OSC
22h 5m
IPSL
1d
Dewalt vs Bonyth
OSC
1d 4h
OSC
1d 22h
uThermal 2v2 Circuit
2 days
Replay Cast
2 days
Patches Events
3 days
OSC
3 days
OSC
4 days
[ Show More ]
OSC
6 days
Liquipedia Results

Completed

C-Race Season 1
WardiTV 2025
META Madness #9

Ongoing

IPSL Winter 2025-26
BSL Season 21
Slon Tour Season 2
CSL Season 19: Qualifier 2
Escore Tournament S1: W2
eXTREMESLAND 2025
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025

Upcoming

CSL 2025 WINTER (S19)
Escore Tournament S1: W3
BSL 21 Non-Korean Championship
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Thunderfire SC2 All-star 2025
Big Gabe Cup #3
OSC Championship Season 13
Nations Cup 2026
Underdog Cup #3
NA Kuram Kup
ESL Pro League Season 23
ESL Pro League Season 23
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.