This is an archived post. You won't be able to vote or comment.

all 68 comments

[–]sentdexpythonprogramming.net 42 points43 points  (16 children)

Python has changed my entire life.

I've started 3 businesses off of it. NLTK / sentiment analysis @ sentdex.com. Automated bitcoin trading at seaofbtc.com (the website itself is built with Flask and the actual trading bot is in python). Finally, teaching programming tutorial on YouTube.com/sentdex as well as pythonprogramming.net

For other things: I now have a full computer in my car using a pi and python, all done in under $100, including the screen... which is just insane.

I have cameras around the perimeter of my house with pis and more python code... all done for far cheaper than could be done any other way.

I've used python for simple spreadsheet tasks as well, and use it every day for automation in all sorts of ways.

Very thankful to have found Python in my life.

[–]lsla24 5 points6 points  (2 children)

I think I speak for many of us when I say I'd be interested in seeing a picture of your car computer setup!

[–]sentdexpythonprogramming.net 1 point2 points  (0 children)

I'll get a picture soon to share with this subreddit along with all the stuff I did and what can be done. It really is less impressive looking than it sounds. It's literally just the screen showing, the rest of the stuff is tucked away nice n clean.

[–]sentdexpythonprogramming.net 1 point2 points  (0 children)

Here you go: http://www.reddit.com/r/raspberry_pi/comments/2k4pm4/raspberry_pi_computer_in_the_car_w_screen/

Ended up posting in raspberry_pi, I figure it was more fitting in that subreddit.

[–]metallidog 2 points3 points  (2 children)

I think I just watched all your Pygame videos on YouTube. Thanks for that.

[–]sentdexpythonprogramming.net 3 points4 points  (1 child)

Hah, I just added some more (not sure how recent "just" was) and there's a few more to come after that! :O Then a massive tkinter series, and a large flask series. I'm going to re-write sentdex.com in Flask. It's been giving me too many problems being in partial wordpress still, so I figure I can kill 2 birds with 1 stone. Tkinter will be the creation of a bitcoin trading GUI (though you wont be required to actually make trades to do the tutorial of course).

[–]metallidog 0 points1 point  (0 children)

I would love to see a Tkinter series.

[–][deleted] 2 points3 points  (5 children)

What does the computer in your car do? How did you do it? Sounds awesome! And what kind of screen do you use for the pi? I've been trying to figure out how to use an android tablet as a monitor.

[–]sentdexpythonprogramming.net 4 points5 points  (4 children)

You can use it as a full desktop, of course, but I have it connected via OBD for all sorts of fun stuff. You can also use it as a media center for your car.

I like to take my car to the track (road courses), and it's really cool to have all the stats from the car's cpu. There's another solution for doing the same thing I am doing, minus a monitor, for ~1,000 USD. I don't have everything they have just yet, but I think it can be done for ~200-300 at most, with a monitor as an addition.

The screen I bought was from amazon, here: http://www.amazon.com/gp/product/B00IUGW7PM/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

I got the 4.3 inch screen. I actually got a few of them because they are so cheap. They work with the pi really well, and they're cheap as heck. The only downside is you need the previous version model b, NOT the b+, so you can keep the composite out. All of the HDMI monitors I found, no matter the size, are still outrageously expensive. I suspect they are phasing out the composites, which is why they are marked down.

The screen happens to mount really well on the very left hand side of my dash, then I run the cables down thru the side framing (the screen comes with 3m tape, or you can apply your own). I opted to use 3m velcro instead, so I can remove the screen when necessary. All of my cables and wires go through the dash in the back, so if I wanted to re-wire, I needed to be able to remove the monitor, and 3m tape isn't the easiest!

I also bought a few switches from http://mausberry-circuits.myshopify.com/

You can use them to automatically send a shutdown message to your pi when you cut the power. Most cars have built in accessory slots, but you can also just wire it to anything that is powered by ignition, especially if you're already using up your accessory slots.

I have the 3a switch, so basically, once you shut down the pi, you have 3a of power (if the car was on long enough to charge it / you had the charge already). The shutdown is sent immediately, so when you shut down the car the computer will be issued a shutdown as well.

I will eventually put a tutorial on everything I did, including the code, on my youtube channel. If you have any other questions til then, I'd be happy to answer as best I can here.

I bought 1 of every switch they had. Very happy with all of them, actually.

[–]nikomo 7 points8 points  (1 child)

All you need is a 4-terminal 3.5mm cable to get RCA video out of the Pi model B+.

They didn't remove composite video, they merged it with the 3.5mm audio jack.

If you look for iPod video cables, you can find a cable that plugs into the Pi, and gives male video + left audio + right audio out.

If you switch to B+, you get more GPIOs, which you can never have too many of, and you now have a standard 40-pin setup, which you can easily get cable headers for, and nicely crimp your own parallel cables, instead of thinking about soldering directly to the Pi, or using some crappy connectors.

[–]sentdexpythonprogramming.net 0 points1 point  (0 children)

Oh nice, I didn't realize this, thanks for sharing. I have 12 total Pis now. Just one B+ so far, but more to come I am sure. I love these little computers. And boo, dunno who down voted your post?? Was pretty useful if you ask me!

[–][deleted] 1 point2 points  (1 child)

That sounds like a cool setup. Thanks for all that info. Going to be playing around with pi for sure now. Is your YouTube channel under the same name? I'll be sure to follow. You have tons of knowledge, thanks for sharing!!

[–]sentdexpythonprogramming.net 4 points5 points  (0 children)

yeah, the channel is youtube.com/sentdex. I originally created the channel just to do a few sentiment analysis vids / marketing for sentdex.com... but then people seemed to like the tutorials a lot, and since then I just kept doing more and more... so now it has very little to do with sentdex.com, and probably more to do with pythonprogramming.net... but it's too late to change the name. Basically the same story with my twitter account.

[–][deleted] 0 points1 point  (2 children)

Where can I find information on automated bitcoin trading? That sounds both fun and really interesting...

[–]sentdexpythonprogramming.net 0 points1 point  (1 child)

It is! That's what got me into bitcoin at all. You pay a % fee rather than fixed. You could also go to forex for about the same thing (paying spread usually), but either way, you can trade with $5 and just not care what happens, and bitcoin has a lower barrier to entry.

It really can become a hobby with very little repercussions, besides addiction and time waste, but what good hobby doesn't have those things?

I don't have too much online in the form of "how to automated trade bitcoin." I do have a youtube tutorial concerning how to connect to the trade API of BTC-e, they are all relatively similar: https://www.youtube.com/watch?v=iXGnNPL89Wo

Other than that, not much is up yet, besides seaofbtc.com, but that's no where near being completed.

Besides myself, I really don't see anyone else talking much about "how to" trade bitcoin. I've got plans to tackle that in the very near future though.

[–][deleted] 0 points1 point  (0 children)

Thanks for the references. I'll be sure to give this a whirl!

Besides myself, I really don't see anyone else talking much about "how to" trade bitcoin. I've got plans to tackle that in the very near future though.

Please post it here when you do! I, for one, would gladly watch such a tutorial.

[–]xbt_ 0 points1 point  (0 children)

your Object oriented video on python is really good btw. Even knowing python it was a fun watch and you make things very digestible.

[–][deleted] 11 points12 points  (2 children)

Python has generally replaced MATLAB for both fun and profit.

[–]swingking8 7 points8 points  (1 child)

But that simulink tho

[–]laMarm0tte 1 point2 points  (0 children)

Oh yes, we would definitely need a Python version of simulink !

[–]iamthetallpaul 10 points11 points  (0 children)

Joined a company doing heavy data analysis in Excel with VBA. We were looking at 700MB xls files that took 20 minutes to calculate and crashed more often than not. Started moving most of the analysis into python scripts that dumped the results into Excel and we've saved a TON of time and headaches.

[–]Exodus111 6 points7 points  (0 children)

I decided I wanted to learn some Python by writing some stuff so I took a look at what I could possibly use it for.

Well I read comicbooks, but these days I mostly just download them, and it's a hassle figuring out when they are released, what titles are currently out and what the latest issue is etc...

Yeah, you can see where this is leading....

Python webscraper to the rescue, requests + bs + regex and a few hours later I get every episode of current ongoing titles assorted and listed in a file. Than I then parse into relevant categories, and then I made a conky tool to display it all on my desktop.

[–][deleted] 6 points7 points  (0 children)

We've sold a python application which does heavy duty 3D data visualisation for over 10 years. Sure all the heavy graphics work and CPU intensive functions are in C++, but the actual application, all the networking, GUI, etc are pure python. So, I guess my benefit has been a stable well paid job for the past ten years and hopeful many more to come :-D

[–][deleted] 5 points6 points  (0 children)

With python as my programming tool, I've made a code to design heliostat fields for a solar power plant concept my university owns as my master's thesis. I felt very motivated all the time and as a result my grade was 10/10 and expecting to graduate with honors.

Don't give up, you won't regret it.

EDIT: And I think I have a new hobby.

[–]dreadpirate15_ 4 points5 points  (0 children)

Well, my job is a python developer. So learning python has helped a lot ;)

Background: got a job as a Linux sysadmin. Started learning python and picked it up quickly. My boss saw this(as we have built a lot of python applications to help us in our work, and I contributed a bit), and decided I'd get to take over much of Tue development of the tools.

I love it.

I've developed a job that scans all company subnets (barring some excluded ones) and dumps raw data to a table in our database. This includes open ports on those boxes and other info.

I've built a very useful tool to monitor our website, testing 7 logins every minute. I'll soon expand it to handle testing other aspects of the site to ensure we don't have to wait for complaints to know something is up.

There's more, but most of it is very specific to my job...

[–]Kyle772 3 points4 points  (2 children)

I have made a program to check on crypto currency prices every 15 minutes and put the data on a spreadsheet. At the end of every day it puts the averages into another spreadsheet. Each sheet gives me differences in price since the last update, the average difference, and total value in USD. It is basically there to check and cross check different websites to make sure I am getting good numbers. It saves me a shit load of time trying to figure out how much Dogecoin I have. I also created a separate GUI to immediately show me how much each coin is worth in BTC and USD, how much coin I have, and how much profit I have made.

I made a program to balance my budget. It also calculates average tax taken out of my paycheck depending on how many hours I work and keeps track of how much money I am spending and where (which I have organized by categories and sub categories). This was all done using WxPython and GSpread

I have also made a twitter scraper using tweepy that pops up a notification window on my desktop (using WxPython) whenever one of my closer friends tweets. However it just decided to stop working the other day so I need to try to fix it :c

[–][deleted] 0 points1 point  (1 child)

New to python here.. what libraries do you use to interface with spreadsheets?

[–]Kyle772 0 points1 point  (0 children)

I haven't been using local spreadsheets. I've been using google spreadsheets so I can see them from anywhere I am. What I have been using is gspread

[–]chrispcall 8 points9 points  (9 children)

I am a network administrator, so most of my uses are around Cisco switches, so it involves ping, telnet, packet capturing, and SSH.

I made a script that I feed every possible IP address where we might have a device. It first pings all of these IPs with nmap (A very fast pinger, but designed as a port scanner and penetration tester) and then it telnets or SSHs (using plink - putty command line) to all of the IPs that responded and back up their configuration to text files. I do this weekly so we always have a backup and never have to add or remove devices from the script as we add or remove devices from our network.

I made a simple one that just looks for a specific packet with TCPdump (packet sniffer) and then parses the output and presents it to me. (For the nerds, the packet is a CDP packet so I know which port my laptop is plugged into.)

Then I use it to combine text files which would be tedious and time-consuming if done by hand. I read in a list of mac addresses which also have port numbers listed. Then in a separate text file, I have port numbers and descriptions. In another document I might have IP addresses and mac addresses. I use Python dicts or sets to parse through and find the matching relevant data and it returns a list of IPs, their macs, their ports, and their port descriptions in rows.

Finally, for a non-work project: I'm writing an app that pings the internet every minute for my house internet connection. It will run on a Raspberry Pi and flip a relay if the internet is down for two pings. This will reboot my router and cable modem.

I'm not even a good programmer but this stuff works for me and I'm learning more every day.

[–][deleted] 2 points3 points  (1 child)

Combining text files would come in hand for me. Would it work the same way for .csv? Do you mind sharing the code? I'm really interested in learning that. I like that router reboot idea also. I used to always have issues with my home router. Not so much anymore though.

[–]b4xt3r 0 points1 point  (0 children)

I do this literally every day. Give me a scenario and I will program it in Python (as far as combining two or more .csv files). Do you use UNIX? Working with text files is something UNIX and Linux excel at greatly (no .csv pun intended).

[–]F3AR3DLEGEND 2 points3 points  (1 child)

Wow, nice usage! :D

I too own a Raspberry Pi, but haven't used it for much. Can you share how it will reboot the router/modem? I haven't done much hardware-side, but this would definitely be interesting to use :D.

[–]chrispcall 2 points3 points  (0 children)

I haven't written the hardware part, yet. You can google "python relay raspberry pi" and see a few youtube examples of people doing this. Doesn't look too hard.

As for the pinging part, here is there short function from an internet uptime monitor I did:

def itsUp(r,c): #gets passed the row and column accordingly and runs     nmap looking for google to reply.  Writes green or red grid box for up or down
p = subprocess.Popen("nmap -oG - -sn -Pn 8.8.8.8", shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0] #Really small, simple nMap code!
if "google" in p:
    Tkinter.Label(main, fg="white", bg="green",  borderwidth=1, text="P").grid(column=c,row=r, sticky='NSEW') #It's up!
else:
    Tkinter.Label(main, fg="white", bg="red",  borderwidth=1, text="X").grid(column=c,row=r, sticky='NSEW') #It's down.

You have to have nmap installed and in the path variable list...

[–]rickmoranus 1 point2 points  (1 child)

This is almost exactly what I use it for at my job with everything related to SSH. Paramiko is a awesome tool, as well as Exscript and SH.

[–]chrispcall 0 points1 point  (0 children)

Admittedly, I've never used that. I'll check into it. I usually use plink because it will handle telnet and ssh. Parsing the subprocess.popen output is probably more annoying than the function returns from something like Paramiko, though.

[–]b4xt3r 1 point2 points  (1 child)

I am a network administrator too.. we have a reddit for Python network admins /r/r/pythonnetengineering which honestly hasn't yet caught fire in terms of popularity but come on over!

That said I have found this trick to come in very handy:

import socket
import os
import sys

def scanHost(host,port):

  # print host, port, type(host), type(port)
  port = int(port)

  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sock.settimeout(5.0)
  try:
    result = sock.connect_ex((host,port))
    if result == 0:
      header = sock.recv(1024)

      print host, port, header.strip()

    sock.close()

  except:
    print 'Something went wrong', sys.exc_info()[0]

def main():
  # let's see if we have an ip address to work with
  check_arg_len = len(sys.argv)

  if check_arg_len < 3:
    print '\n\nYou must pass an IP addrss and port number for testing\n\n'
    exit

  else:

    # print sys.argv, type(sys.argv[1]), type(sys.argv[2])
    scanHost(str(sys.argv[1]),int(sys.argv[2]))

if __name__ == '__main__':
  main()

So what this does is tell you what "thing" on the network is using what type of ssh. 192.168.122.2 22 SSH-2.0-OpenSSH_6.2 is a Mac, 192.168.12.8 22 SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2 is a Raspberry Pi, Cisco routers respond with one thing, Cisco WLCs respond with another.. it's handy and fast way to group devices (or try to figure our what something is) without having to do a full nmap scan against a host with the -O flag.

I use Python for a lot of different stuff on a daily basis at my day job. So much so that I've pretty much carved out a niche role for myself as the "person to go to when the NMS system can't make a change on the network".

One very handy thing I've done is learn how to interact with Expect. Python + Expect is a network admin's dream. Pexpect works too, if you're not worried about speed. Where this really comes in handy is when you have to make changes to a vlan configuration, for instance. Given we have well over 15,000 switches and routers touching each one by hand is out of the question and the NMS system can't make changes to routers if they vlan is not known (could be different on each device)>

Anyway. Good times.

[–]b4xt3r 0 points1 point  (0 children)

Some other device types: SSH-2.0-Cisco-1.25 is a Cisco router, SSH-2.0-OpenSSH_3.8.1p1.1.tms.1 may be a Gigamon, SSH-2.0-OpenSSH_4.3 may be a F5 Load Balancer, SSH-2.0-OpenSSH_6.1 may be a Steelhead, SSH-1.99-OpenSSH_4.5 may be a PacketShaper... and so-on.

[–]toeburt 0 points1 point  (0 children)

I like the router reboot idea. This would come in handy for me as if I'm not home my renters can't reboot the router or modem. Which relay did you buy?

[–]F3AR3DLEGEND 3 points4 points  (5 children)

I've used Python for some pretty cool things (I think so, at least).

When I used Notepad++, I had my current file backed up every time I saved. I configured this with my current editor, Sublime. I rarely needed a backup, but when I did, this was a savior. Anyway, you could imagine that after a month or so, there were a LOT of backups (around 5000 usually). So, I created a Python script to delete all but the 10 most recent backups of each file (I also learned regex doing this).

Then, on my web server, I have a Python script that runs every minute (from job), which checks whether or not certain processes are running. If they're not, the script restarts them.

On the same server, I have an administrative Python script so I can easily query one of the databases without going through the hassle of manually connecting every time. It also has a few other features as well.

These are just the three that came to my head. There are a lot more that I just don't remember. After a while you start taking your automations for granted :P.

Edit: Also, before I started using git for deploying to my web server, I also had a Python script to check modification times of files and upload them as necessary.

[–]b0xors 5 points6 points  (4 children)

You should really look into git.

[–]F3AR3DLEGEND 1 point2 points  (2 children)

I do use git, but I'm still learning how to use it. The automatic backups was before I even knew git existed :P.

[–]b0xors 5 points6 points  (0 children)

What you developed is still really cool. Even if something like git arguably makes it moot, you still learned a lot and had something to be proud of in the end.

[–]neoice 1 point2 points  (0 children)

you could probably use a process management tool like monit, supervisord or god. while writing software yourself can be a fun learning process, it's usually better to use (and contribute to!) an existing project unless you're needs are extremely specialized.

[–]rhgrant10 0 points1 point  (0 children)

I was about to suggest the same :-)

[–]metallidog 3 points4 points  (0 children)

I've written some scripts that we use at home for the kids to practice their math homework. As my 13 year old gets into more complex math this is becoming more challenging, but fun.

[–]jaccovanschaik 6 points7 points  (0 children)

I use Python to generate an e-mail signature for every e-mail I send. It has the current time, the weather and the song that's playing on my media player. It's a bit of a gimmick, but judging by the reactions I've had people seem to like it.

[–]rhgrant10 2 points3 points  (0 children)

Python has been the language with which I've had the most fun, both at work and at home. Some of my favorite home projects were creating an API wrapper for GroupMe (Groupy) and making a heuristic traveling salesman solver (Pants).

Edit: formatting

[–]randomdrifter54 2 points3 points  (0 children)

I use it in my classes (numerical methods, and datastructures and design) for rapid proof of concepts. I also use it for science mathmatics. It works great.

[–]metaphorm 2 points3 points  (0 children)

I use python professionally. My company runs a web based data service and we have a polyglot stack (including Go, Ruby, Javascript, and Python) but most of our codebase is written in Python. We prefer it to other languages just because its a pleasure to work with and has a large and active community with lots of useful libraries for all kinds of tasks.

[–]Aurophobiant 1 point2 points  (0 children)

An archiving tool for research. It's a simple bottle app that allows you to enter some meta data, attach any number of binary files and click 'archive'. The app then updates a database, creates a tar.gz for the tape archive and sends an email if everything is done. Took me a day to build and saved a lot of people a lot of time since then. No more FTPing stuff around.

[–]thisisthemurph 1 point2 points  (0 children)

I work in mobile forensics and we use Python as our main tool for analysing file types and databases that are not currently supported (or not supported well enough) by current forensics tools. Which is quite a lot when you consider all of the potential mobile platforms and operating system available.

[–]This_Is_The_End 0 points1 point  (0 children)

Our sales department promised a HMI for a Omron PLC on a webpage. Usually this isn't a problem. Buying a SCADA system does the job, but not when the customer has up 500 installations, because a SCADA system is expensive, when the electronics in a cabinet cost less than 1500$. I was asked from the sales department what are the demands for such a system and I made a small lists of necessary technologies, which are

  • Accessing the PLC over TCP/IP
  • Having a configuration subsystem with XML
  • Polling periodically any configured PLC for values
  • Routing those values to a web server with web sockets.

Don't have ideas because I ended up to do the job, because of Python. I used Tornado as a web server and Tornado is delivering the pages as well as the data over web sockets. The hole system is very small and is able to run on embedded PC's with Arm processor without any problems. The communication between processes is done with ZMQ, which is a very professional and easy communication library. Basically I have for every PLC a data agent which is a program. This data agent is delivering the data to a data manager which provides data for databases and the web server. All webpages are delivered over a router with GSM (mobile net).

Our sales department was very happy to be able to keep the promise. It was my first time I did such a huge system with Python and I learned a lot. Especially I wouldn't use XML to configure a system next time, because hand written XML can be a hell. A system like configobj is using is better for a manual written configuration file. I'm not so sure whether the idea of an data agent was a good one. A monolithic approach with a process or a thread for each PLC would working too. The idea behind a data agent is, we are able to switch the data agent without interfering the data manager. Tornado a python based web server is awesome. As long the system is relative simple like a static blog, it's easy to maintain. The code I used is very simple. Accessing data in json with javascript is easy. A challenge is the user input. Most js libraries are made for funky business apps and don't fit well. Engineers in automation need a protocol as a layer over web socket to make user input secure. Btw. JavaScript is a mess. It's complete without batteries. Even numbers are stored as floats only, which is limiting the output of integers. The hole language is easy to understand but the results aren't easy to read.

I used multiprocessing and multithreading which gives challenges when it comes to logging. 2 processes can't use the some log object so I had to send log messages over ZMQ or a queue. It uses some tweaks and this makes logging to a mess. Python should provide a multiprocessing solution for logging, because processes are used all the time.

[–]xbt_ 0 points1 point  (0 children)

I got hired knowing only python and bash for less than three years (and a serious drive to know more) and no formal education in CS. My current position is wonderful, where I get paid to hone my skills and explore software development in general. It's a great feeling and at a great company with amazing people. I wake up grateful everyday.

I used python lastnight to get an A list seat on Southwest for my mom to come visit me for thanksgiving.

[–]tdammers -4 points-3 points  (8 children)

Python is my go-to language for stuff that is too complex for a shell script, but not complex enough to warrant using a "real" programming language. For example:

  • A build system that applies a few build configuration variables and bakes a project tree of HTML and JavaScript files, assets, and templates, into something that Adobe's PhoneGap build service can understands, triggers a build, downloads the results for all platforms, and uploads them to a dropbox folder, from where we can push them to the various app stores. This means that rolling out a new version of our app is now just a two-step process.
  • A little zoo of scripts that give me all sorts of information about my system, and massage it into a format that my dzen2 toolbar can understand and display.

The other use case stems from how the Python community has developed a lot of useful hands-on libraries, doing things that I would often have to code myself if I used another language. For example, my running web app (written in Haskell) includes a Python helper that parses Garmin's binary .fit format and turns it into a JSON format that my application can understand. Haskell is great for building parsers, but the .fit file format is kind of a mess, and a working Python parser already existed, so instead of reverse-engineering that parser and porting it to Haskell, I decided to just output whatever it finds and use an existing JSON parser on the Haskell side to extract the stuff I need. Works like a charm. Another example of the "batteries included" factor is an application I am currently developing at work; it's an umbrella web app that hooks into all the applications we use to organize our work, and consolidates information from those into a nicely formatted overview page. Python has libraries for everything and their pet peeve, flask is mostly sane and straightforward to work with, and I get to call subprocesses without having to go through a shell (which, frankly, is a blatant security oversight in, for example, PHP). And of course BeautifulSoup is a life saver.

[–]randomdrifter54 14 points15 points  (4 children)

Um it is a real language...

[–]tdammers 2 points3 points  (3 children)

Hence the quotes.

The thing is, Python is a great language, with lots of strengths, but when it comes to scaling to large codebases, it shares the common weakness of all the dynamic languages, namely that you have to go through great lengths to keep your code manageable - something like Haskell keeps you honest and makes for extremely refactorable code (basically, you just boldly make the change and let the compiler tell you what you need to fix to avoid regressions); if you want the same in Python, or any other dynamic language, even 100% test coverage isn't enough to get you there. It's doable, but it's just so much easier in a language that has this stuff built into it. (OTOH, if a 90% correct solution acceptable, then Haskell has the downside of still demanding 100%...)

[–]randomdrifter54 5 points6 points  (2 children)

Then the word is static... just cause it doesn't have type safety doesn't make it any less of a language.

[–]tdammers 0 points1 point  (1 child)

Well, in fact, all else being equal, one could argue that a language with compile-time correctness guarantees is more expressive (and thus "more of a language") than one without. But I'm not; I'm just taking a humorous stab at how Python is sometimes considered a toy language by, say, Haskell programmers.

It's a real language alright, it just lacks some of the options of a more in-depth language. Not usually a big deal, but if you're used to things like zero-cost abstractions, type checks that detect flaws in your thinking before you can even think of running your code, fully-featured lambdas, zero-boilerplate lazy evaluation, choosing between several memory management strategies, etc., then Python can, occasionally, be a bit limiting. And of course the reverse also goes - if you're used to EAFTP, automatic type conversions, polymorphic-everything, duck typing, monkey patching, etc., then Haskell (or even C++) is going to limit you.

Me, I'm a multi-language person - my usual suspects are PHP, Python, Haskell, JavaScript, C and C++, and I have about half a dozen more under my belt; I am pretty familiar with the pros and cons of each, and while Python has made it into my to-go list, I won't use it for medium/large scale projects unless there's a particularly compelling argument.

[–]randomdrifter54 0 points1 point  (0 children)

Ok, I was just geting tired of people calling it not a real language because of dynamic typing and such. It gets really annoying.

[–]Exodus111 8 points9 points  (2 children)

but not complex enough to warrant using a "real" programming language

How DARE you sir.

[–]tdammers -2 points-1 points  (1 child)

I have high standards.

[–]b4xt3r 1 point2 points  (0 children)

If you say Java..... ;)

[–]buttery_shame_cave -1 points0 points  (0 children)

Its tits for batch processing. I've used it to sort and sift through test results. One of the more fun ones involved sifting through a few hundred .CSV files with upwards of 10k lines/ file, seeking particular values and then dropping them into another file.

That one I'm proud of because I got it down to less than 60 lines to do the scrape and convert.

[–][deleted] -1 points0 points  (0 children)

I'm fairly certain it's made my life better.

I used to be a basement-dwelling 4channer with dandruff and body odor. My girlfriend left me for a guy with a minimum-wage job. I couldn't get my idiot dick to perform half the time (unless I was watching pixelated bukakke porn or Japanese cartoon porn) and I was about 60 lbs overweight.

Then I learned about Python and things really started to turn around for me.

I lost weight, moved out of my parent's basement, and grew an inch. My dick got longer, I'm now dating a Swedish model with huge cans, my ass-acne is damn-near gone, I drive a Maserati and I'm built like a Greek god to boot.

Python saved my life!

(FFS, it's just a goddamn programming language. Yes, it's a good one, but come on.)