I'm working on a tool that generates Markdown documentation for .NET libraries using reflection and any available XML docs.
[t]http://i.imgur.com/s4iDfq0.png[/t]
It can generate both single-page and multi-page documentation. The reason it outputs Markdown is because it can be used as an intermediate format for any Markdown-supporting static site/docs generator, which makes integration easy. You can see an example on the [URL="http://berkin.me/rantdocs/api/#rantengine-class-rant"]Rant docs[/URL].
Once I finish implementing all the features I want and polish it up, I'll release the tool to the public.
Hey, been a while WAYWO. I've started freelancing, but I have only found Photoshop and admin jobs so far, vouchers, banners, photo editing. Doing an internship-like project for a company too, designing and building a website/app combo. Not something I can share here though.
I can't find that simple image viewer that someone here made. My windows one is broken and garbage anyway.
Can someone help?
[QUOTE=hippowombat;52096471]Hey I feel super stupid, but I'm having some trouble understanding running shit with Python (brand new to this)
I'm trying to install Python, pip and virtualenv using the instructions on [URL="https://github.com/slackapi/Slack-Python-Onboarding-Tutorial/blob/master/README.md#pythonboarding-bot"]this page[/URL] so that I can author some custom bot behavior in Slack.
I have Python installed, which came with the latest version of pip. Do I really need to navigate to the Python install directory in order to run Python commands in command prompt? If I run a command prompt from a win+s search, it runs it from like C\users\my username and acts like it doesn't know Python stuff anymore. [/QUOTE]
Have you tried adding the python directory to your PATH environment variable?
[QUOTE=reevezy67;52096933]Hey, been a while WAYWO. I've started freelancing, but I have only found Photoshop and admin jobs so far, vouchers, banners, photo editing. Doing an internship-like project for a company too, designing and building a website/app combo. Not something I can share here though.
I can't find that simple image viewer that someone here made. My windows one is broken and garbage anyway.
Can someone help?[/QUOTE]
[url]https://github.com/Torrunt/vimage[/url]
Organizing an OpenGL project is not very fun. It just doesn't fit nicely with the OOP paradigm. Especially because OpenGL itself is such a monstrous state machine.
Is Vulkan any better at OOP design? I've been wondering that since its announcement.
Haven't summoned the courage to take the 50 foot dive into Vulkan yet, maybe this summer.
[QUOTE=WTF Nuke;52097679]Organizing an OpenGL project is not very fun. It just doesn't fit nicely with the OOP paradigm. Especially because OpenGL itself is such a monstrous state machine.[/QUOTE]
Might be a chance to mix and match some other programming paradigms
[QUOTE='[aL`H]solokiller`og;52097771']Is Vulkan any better at OOP design? I've been wondering that since its announcement.[/QUOTE]
At the very least it should be far easier to wrap that way, but I'd say the API itself is definitely more on the procedural side due to C limitations.
In my opinion it's still decently easy to wrap OpenGL, but due to the amount of global state it's not as efficient and requires you to learn more of the API in advance (since it seems to be easier to create a glitchy mess while Vulkan gives you debug layers to validate against).
[editline]13th April 2017[/editline]
[QUOTE=LennyPenny;52097920]Might be a chance to mix and match some other programming paradigms[/QUOTE]
I'd say both for OpenGL and Vulkan you can wrap them into OOP or functional programming.
It really depends on the application though, and if you want to make something larger I probably wouldn't want a thin wrapper for anything but the core rendering code.
Shader generation isn't time critical, so you can do some pretty neat things with (runtime) meta programming there if you don't want to deal with the shading language and/or graphics card differences.
I don't think there's really a great drop-in solution for that yet though, probably because the specification is so large and you'd have to adapt it per language. I started making one for C#, but I put it on ice after two supported GLSL versions because it's very repetitive work.
Direct State Access makes it really easy to wrap OpenGL with OOP paradigms, once you stop worrying about bind calls outside of your main rendering loops things get a lot simpler. Ive used my base device object (API object, really) class as a base class for nearly all of my other specialized wrapper classes without error so far.
Key is making sure to delete the copy ctor and operator though, along with defining a move ctor and operator. That is too easy to forget until things mysteriously break.
[QUOTE=paindoc;52098255]Direct State Access makes it really easy to wrap OpenGL with OOP paradigms, once you stop worrying about bind calls outside of your main rendering loops things get a lot simpler. Ive used my base device object (API object, really) class as a base class for nearly all of my other specialized wrapper classes without error so far.
Key is making sure to delete the copy ctor and operator though, along with defining a move ctor and operator. That is too easy to forget until things mysteriously break.[/QUOTE]
In C# it's about equally easy/complex. The threaded GC means you can't delete anything in the finalizer, but you still should have that as fallback for when you can't use [I]IDisposable[/I] via [I]using[/I].
In cases where [I].Dispose()[/I] wasn't called, you can (should) queue up the deletion from the finalizer into [URL="https://msdn.microsoft.com/en-us/library/dd997373(v=vs.110).aspx"]a matching concurrent collection[/URL] and then empty it out somewhere from the main thread.
Forked a userscript to remove reposts from your soudcloud stream and also made it remove playlists
[url]https://gist.github.com/LennyPenny/7788633df48608d66aee42fc90623c12/raw/SoundCloudHideReposts.user.js[/url]
For some reason it was really hard to find a working script for this
[QUOTE=LennyPenny;52098305]Forked a userscript to remove reposts from your soudcloud stream and also made it remove playlists
[url]https://gist.github.com/LennyPenny/7788633df48608d66aee42fc90623c12/raw/SoundCloudHideReposts.user.js[/url]
For some reason it was really hard to find a working script for this[/QUOTE]
thank you so much, I didn't know I wanted this until now
[QUOTE=Tamschi;52098302]In C# it's about equally easy/complex. The threaded GC means you can't delete anything in the finalizer, but you still should have that as fallback for when you can't use [I]IDisposable[/I] via [I]using[/I].
In cases where [I].Dispose()[/I] wasn't called, you can (should) queue up the deletion from the finalizer into [URL="https://msdn.microsoft.com/en-us/library/dd997373(v=vs.110).aspx"]a matching concurrent collection[/URL] and then empty it out somewhere from the main thread.[/QUOTE]
I've not even touched C#, so I hadn't considered things like this. I just know that OpenGL + threading scares the fuck out of me, because even without worrying about what resource is bound at which binding point at any given time OpenGL still seems to throw fits about threading.
[QUOTE=WTF Nuke;52097784]Haven't summoned the courage to take the 50 foot dive into Vulkan yet, maybe this summer.[/QUOTE]
About sums up my feelings on it too. I think we talked about this in the discord chat recently too. I like complex and detailed systems and love learning to use them (a detailed thing like Vulkan is nearly as exciting as a DCS-quality cockpit in a flight sim to me, so many buttons!) but there's just so [I]much[/I] to learn about Vulkan to just get it running. It scares me away, especially after my experience fucking about with CUDA. And that basic level of learning doesn't account for learning to use Vulkan [I]well[/I], which is the important part. I think its super cool that you can use Vulkan with FPGAs and such, though. The separation of the API into layers was a pretty neat idea.
[editline]edited[/editline]
well, fuck. The official Vulkan tutorial has ensnared me, especially when they include <functional> and mention using lambda's for resource management shortly. Looking through the API reference book is interesting too, lots of the Vulkan struct's and API calls can take function pointers that let you control how the API handles tons of things - which is both really useful, and kinda dangerous since it puts a ton of responsibility on you (which, to be fair, the API reference and most documentation make abundantly clear is what Vulkan does as a whole)
[editline]edited[/editline]
the vulkan tutorial pretty much goes through setting up a templated vulkan resource deleter class as one of its first major items, which is what I spent a good amount of time mucking about with getting OpenGL to do - which only worked because I used DSA. Their deleter class puts mine to shame though, and behaves in a very "Modern C++"-friendly fashion. Neat stuff. I have to work to do, but I'm definitely going to be playing with Vulkan more when I get home tonight and see about getting it working with my little star-rendering demo
[QUOTE=paindoc;52098597]I've not even touched C#, so I hadn't considered things like this. I just know that OpenGL + threading scares the fuck out of me, because even without worrying about what resource is bound at which binding point at any given time OpenGL still seems to throw fits about threading.
[...][/QUOTE]
Any single OpenGL context is single-thread only, but you can share [I]certain[/I] (not all!) objects between different OpenGL contexts.
You can also move a context to a different thread via some make active call that I can't find right now, but that makes it invalid on the original thread.
[QUOTE=Tamschi;52098883]Any single OpenGL context is single-thread only, but you can share [I]certain[/I] (not all!) objects between different OpenGL contexts.
You can also move a context to a different thread via some make active call that I can't find right now, but that makes it invalid on the original thread.[/QUOTE]
The API calls to share resources, for example, are [URL="https://www.khronos.org/opengl/wiki/OpenGL_and_multithreading"]here[/URL] and they come down to being pretty platform specific - but it appears that GLFW can help ease the pain of sharing resources between contexts, by setting the [I]shared[/I] parameter when creating a new window [URL="http://www.glfw.org/docs/latest/context_guide.html#context_sharing"]with GLFW[/URL]. [URL="http://stackoverflow.com/a/17792242"]This answer on SO[/URL] makes it seem though that moving a context to a different thread doesn't really require any work though?
[QUOTE=paindoc;52098924]The API calls to share resources, for example, are [URL="https://www.khronos.org/opengl/wiki/OpenGL_and_multithreading"]here[/URL] and they come down to being pretty platform specific - but it appears that GLFW can help ease the pain of sharing resources between contexts, by setting the [I]shared[/I] parameter when creating a new window [URL="http://www.glfw.org/docs/latest/context_guide.html#context_sharing"]with GLFW[/URL]. [URL="http://stackoverflow.com/a/17792242"]This answer on SO[/URL] makes it seem though that moving a context to a different thread doesn't really require any work though?[/QUOTE]
You have to call in this case [I]glfwMakeContextCurrent[/I], but yes it's very simple. You just can't share it between threads, which is a pretty major annoyance.
[QUOTE=hippowombat;52096471]Hey I feel super stupid, but I'm having some trouble understanding running shit with Python (brand new to this)
I'm trying to install Python, pip and virtualenv using the instructions on [URL="https://github.com/slackapi/Slack-Python-Onboarding-Tutorial/blob/master/README.md#pythonboarding-bot"]this page[/URL] so that I can author some custom bot behavior in Slack.
I have Python installed, which came with the latest version of pip. Do I really need to navigate to the Python install directory in order to run Python commands in command prompt? If I run a command prompt from a win+s search, it runs it from like C\users\my username and acts like it doesn't know Python stuff anymore. Also, trying to run
[CODE]$ [sudo] pip install virtualenv[/CODE]
returns an error
[CODE]C:\Python27>python $ [sudo] pip install virtualenv
python: can't open file '$': [Errno 2] No such file or directory[/CODE]
What am I doing wrong here?[/QUOTE]
I've had issues with pip installing things on windows. You could try anaconda (I like mini-conda personally). Then you can try conda install virtualenv
[b]Edit:[/b] Assumed you were using windows cause of icon on fp. If you are on windows, using sudo is peculiar.
If you aren't on windows my advice is useless.
[QUOTE=Topgamer7;52099472]I've had issues with pip installing things on windows. You could try anaconda (I like mini-conda personally). Then you can try conda install virtualenv
[b]Edit:[/b] Assumed you were using windows cause of icon on fp. If you are on windows, using sudo is peculiar.
If you aren't on windows my advice is useless.[/QUOTE]
it sounds like his PATH is configured incorrectly. Hippowombat, when you check the user environment variables, is Python in your PATH at all?
Miniconda is also an easy way to get python setup, in my experience, and it has always done better at taking care of setting the correct PATH values then when I've tried installing just Python alone. It'll ask if it should/can add itself to the path for just oyu, all users, or no one at all - just go with "all users". Then, make sure to restart as PATH changes propagate in a fucky way if you don't just restart. From that point, try opening a command prompt or powershell instance and typing "python -V" to make sure it installed correctly.
Thanks for the responses guys, I haven't configured Python in my PATH, will try after work. I am attempting Python on Windows, which I thought the tutorial was tailored to, which is where I got sudo from, dunno what it means tbh.
[editline]13th April 2017[/editline]
Okay, so a follow up - I tried this on my work PC, added [CODE];C:\Python27;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\other-folders-on-the-path[/CODE] to the end of my Path Variable Value (if that makes sense) which allows me to return [CODE]Python 2.7.13 etc etc[/CODE] on just a regular Start>Run>cmd.exe. However, trying to run [CODE]pip install virtualenv[/CODE] or [CODE]python pip install virtualenv[/CODE] from cmd.exe returns [CODE]'pip' is not recognized as an internal or external command, operable file or batch file[/CODE] am I missing something for Pip functionality from my Path Variable Value?
Wrote a simple oscilloscope application
[IMG]http://carp.tk/$/Test_2017-04-13_23-53-38.png[/IMG]
It interfaces with the Bus Pirate v3 in binary mode and uses the voltage probe. Can't go above 2 kHz (i locked it to 1 kHz because stuff above isn't smooth)
Good enough for what i need.
[QUOTE=hippowombat;52099645]Thanks for the responses guys, I haven't configured Python in my PATH, will try after work. I am attempting Python on Windows, which I thought the tutorial was tailored to, which is where I got sudo from, dunno what it means tbh.
[editline]13th April 2017[/editline]
Okay, so a follow up - I tried this on my work PC, added [CODE];C:\Python27;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\other-folders-on-the-path[/CODE] to the end of my Path Variable Value (if that makes sense) which allows me to return [CODE]Python 2.7.13 etc etc[/CODE] on just a regular Start>Run>cmd.exe. However, trying to run [CODE]pip install virtualenv[/CODE] or [CODE]python pip install virtualenv[/CODE] from cmd.exe returns [CODE]'pip' is not recognized as an internal or external command, operable file or batch file[/CODE] am I missing something for Pip functionality from my Path Variable Value?[/QUOTE]
tbh, I just go into the scripts folder where pip is and I run a cmd from there instead. It's not worth screwing around with paths to get it to work when I can just use the console in PyCharm for experiments. I rarely use pip to begin with so I don't mind going into the folder.
[QUOTE=hippowombat;52099645]Thanks for the responses guys, I haven't configured Python in my PATH, will try after work. I am attempting Python on Windows, which I thought the tutorial was tailored to, which is where I got sudo from, dunno what it means tbh.
[editline]13th April 2017[/editline]
Okay, so a follow up - I tried this on my work PC, added [CODE];C:\Python27;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\other-folders-on-the-path[/CODE] to the end of my Path Variable Value (if that makes sense) which allows me to return [CODE]Python 2.7.13 etc etc[/CODE] on just a regular Start>Run>cmd.exe. However, trying to run [CODE]pip install virtualenv[/CODE] or [CODE]python pip install virtualenv[/CODE] from cmd.exe returns [CODE]'pip' is not recognized as an internal or external command, operable file or batch file[/CODE] am I missing something for Pip functionality from my Path Variable Value?[/QUOTE]
The only python directories in my path are C:\Python27\ and C:\Python27\Scripts.
Looks like pip is inside the scripts directory.
[QUOTE=Topgamer7;52100023]The only python directories in my path are C:\Python27\ and C:\Python27\Scripts.
Looks like pip is inside the scripts directory.[/QUOTE]
Yeah that was it, I changed it to just adding c:\Python27\ and C:\Python27\Scripts and Python Pip commands work in cmd just fine, was also able to install virtualenv just fine.
Thanks everyone for the help, I'll be sure to post in WDYNHW next time.
Cheers!
[QUOTE=hippowombat;52099645]Thanks for the responses guys, I haven't configured Python in my PATH, will try after work. I am attempting Python on Windows, which I thought the tutorial was tailored to, which is where I got sudo from, dunno what it means tbh.
[editline]13th April 2017[/editline]
Okay, so a follow up - I tried this on my work PC, added [CODE];C:\Python27;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\other-folders-on-the-path[/CODE] to the end of my Path Variable Value (if that makes sense) which allows me to return [CODE]Python 2.7.13 etc etc[/CODE] on just a regular Start>Run>cmd.exe. However, trying to run [CODE]pip install virtualenv[/CODE] or [CODE]python pip install virtualenv[/CODE] from cmd.exe returns [CODE]'pip' is not recognized as an internal or external command, operable file or batch file[/CODE] am I missing something for Pip functionality from my Path Variable Value?[/QUOTE]
Add the "Scripts" folder to your PATH too.
edit: lmao I forgot to refresh the page, I wrote this message ~30 mins ago and forgot about it. :v:
[CODE]C:\Python27\Scripts\[/CODE]
I read some stuff and thought I was doing it wrong so I tried to fix it thinking it was broke...
[vid]https://s1.webmshare.com/M01vB.webm[/vid]
well it's definitely broke now!
Let it be absolutely said that everything I had heard about Vulkan in terms of its verbosity, difficulty, and danger was [I]entirely[/I] true. And I haven't even initialized a window or done anything but test instance creation yet!
I don't think I need to enumerate/pontificate on how that's not a bad thing, since there are many articles that have done so better than I ever could, but wow. It makes OpenGL feel kinda like one of those screw-together plastic model kits you got when you were a kid, while Vulkan is more like fucking rocket surgery or something. Take the enabling of debug callbacks and the base debug layer, for example. First, Vulkan uses "info" structs [I]everywhere[/I], and creating an instance is probably the first encounter one has with these. To enable debugging, you have to specify 1. the quantity and names of the "validation layers" you wish to enable and 2. the quantity and names of the debugging extensions you want to enable.
[t]http://i.imgur.com/rI5ShSj.png[/t]
With that created you need to now create your callback function, but first there's another [URL="http://i.imgur.com/FsTqLpz.png"]info structure[/URL] to create lol. Then you define a [URL="http://i.imgur.com/12Lo5jq.png"]callback function[/URL], making sure to use the macro's required for vulkan to actually find/call the damn thing. This won't work alone though, as the EXT functions are not loaded by default and you instead have to load them yourself. So you then try to find and call the appropriation debug callback creation and destruction functions - because if you don't make sure to find the debug callback destruction functions and make sure to call them before the instance is destroyed, Vulkan will explode.
[t]http://i.imgur.com/gXG6rMB.png[/t]
While this is all incredibly verbose and easy to break, this is pretty useful ultimately. OpenGL debug contexts are no less of a pain in the dick, and have shitty driver support most of the time. You can also use these callbacks to get useful warnings related to performance issues (change your "create info" struct VK_DEBUG_REPORT bit's to include the perf. warning bit and you're good to go) and the like, and the callback functions themselves are pretty heavily customizable. Its just a fuck of a lot of work to get the basic code in, and I've gotten about 5-6 pages into the reference manual and 2 steps into the official Vulkan tutorial.
I'm still enjoying this, though. it reminds me of CUDA in many ways, from having to create your own vulkan assert macro, to having to use said macro to check [I]everything[/I] you do, to randomly just breaking everything by making what you thought was an innocent API call, and so on.
Hi Everybody!!!
About a week or so ago I posted about my Game Mine Field Crosser, I've fixed a bunch of bugs and I've released it to the play store, check it out if you'd like, I think it's a lot of fun.
[url]https://play.google.com/store/apps/details?id=com.mgreene.minefieldcrosser[/url]
Sorry, you need to Log In to post a reply to this thread.