Thanks for the article, this was a really interesting read (though I'm not using anything to do with machine learning at the moment, this was a really good introduction). I especially liked the list of links at the end. Are you planning using this stuff for any work projects?
This is full of good news. Esp. nice that the first priority stated is to make programming easier for Go users (pragmatism above all). I like that they're looking at generics again, but it doesn't sound like that'll land any time soon. Overall a really nice thoughtful overview of what the Go team (or this member of it anyway) is thinking. Not sure I understood the immutability bit.
Yes, I have paid for all golang, c# (and the rest of) tutorials over the past years that pluralsight offers and I can tell you for sure that each one of these worth the money. But these days at 2017 you can find them for free if you really cannot afford the cost :)
The repo url is here in case anyone wants a quick link: https://github.com/ingest/manifest . Really nice to see code written in Go like this by companies and released with a permissive open source license.
> Another issue was regarding FFMPEG and m3u8’s open source licenses and dealing with the possibility of a sudden license change.
I'm not quite sure I follow there. Any existing code's license wouldn't be able to be changed. Contributors could agree to let their contributions be licensed under a dual/new/different license going forward but it won't just close up on you. This is also not something that would happen suddenly. FFmpeg has no CLA that do things like copyright assignment so changing the license would require approval from all contributors. Open source licenses is exactly what allows you to reuse, share and build on top of each other's expertise. If you want to develop your own implementation fine, but this argument seems rather weak to me.
Reading that paragraph about licensing it came across as partly concern about GPL and partly about other stuff. GPL3 is more restrictive, and if you're dependent on a library which changes license from say 2->3 you'd have the choice of maintaining your own fork without patches or moving to the new license. Not sure why that would be an issue for them specifically but it's certainly possible it would impact their business, and is a slight concern, even if unlikely.
Often this sort of decision is based on a mix of concerns, and it also sounds like they wanted this core feature to be easier to iterate on quickly and be without dependencies, which I can understand. Quite possibly if the rest of their code is in Go it just felt a nice fit to have this important piece also in Go instead of contributing to a C library which has a different focus.
Considering using this for the fragmenta cms at some point - it'd be nice for something like a blog addition to a main webapp to be able to register as a plugin, including views, styles and code. At the moment the code bit is the missing part of this, as code has to be compiled with the app rather than supplied separately. I think a plugin system for webapps would not be too tricky to set up and could have a very simple interface.
As the article points out, are still significant limitations with the support in 1.8 though, so it's not ready yet - Windows is not supported and the Mac OS support is broken. I'm slightly worried by the requirement to have plugins built with the same version of the go runtime, as that would complicate things significantly.
@kenny I'm 'kataras', what I did again and you blocked the iris-go account?... I agree with you, I post Iris only when I see post of other framework, which I saw the before week too, so the problem is not me :P I was disappointed about the mod here because I saw dublicated posts of other packages but when I posted Iris you removed it in the same time you left other online. For example, the iris-go account has been banned again.. why?
Please note me when iris-go account will be available again, (and remove this account).
I think iris is already a success but I want to keep it that way, I don't like promotions as you see, you will not found any post I did create for Iris on the internet, other people do it and I want to keep that way, I only post here because this was the site who gave iris so many users and critism and helped me to make it better
Hello, not blocked, sorry you were on 1 point and someone downvoted that latest story you posted so you ended up on 0 points - that's sort of in limbo and you can read but not post in that case. I should probably look at starting people on 3 points or something and have some mechanism to contact me to ask about it. Anyway I've upvoted you a few times on comments so that shouldn't happen again. Please don't post dupes though... I'm aiming for no dupes if possible and would like a good mix of stories.
Thanks for the clarify, I couldn't post anything on other article which I wanted too, I think you should remove this 'feature'. There are people who trying to modify the news. For example I know a guy (who is a part of other framework and take these things so competitive) who uses bots to prevent me from posting things about Iris, last time I checked this is called bullying...and I believe that the Go community (which is small) should be together and not splitted...
Thanks for this post, it looks like an interesting approach - verbose but avoids the problem of reflecting to get types of logged items, or assuming that they will be of a certain type, by requiring you to log using functions for each item.
Ya, I very much prefer structured logging like this. It also makes it significantly easier to just up this into ES or something else vs. pattern matching (random) output through regular expressions to extract the same data. The fact that we can have multiple outputs is tremendously helpful as what is machine friendly is not necessarily human friendly and both can be useful.
Hello @kenny, I just saw that this website has comments too, I didn't see your comments. Yes I'm 'kataras' and I made a single account to represent the Iris web framework, because the users of Iris asked me to do so.
This name exists here and on reddit(I didn't like and I don't like reddit but I can't ignore the community which asked me to answer on some comments there too).
On your question, iris and all relative packages which I spend time to think and write are used by many web applications and companies (a US television company already uses it) I don't have a list of active websites running Iris but I'm willing to open an issue on github and asking the users to paste their websites or create a telemetry library in order to record these things (optionally). I maintain some websites but as you could see, the last months I don't have time to create my own websites because of Iris (I left from my job to work on Iris only too)
Nice to meet you, are you the mod of this news webpage? If you have any suggestions to do please comment again ( I will check for them from now and on).
Yes, I'm the mod here. Submissions are welcome and it's fine to post your own stuff, but please do take a look at the contribution guidelines when posting. I'd like to see substantial content here so posts that will genuinely interest most poeople - I like to keep it positive, but if posts are very minor point releases or too frequent on the same topic they may be downvoted.
It can be a tough crowd on reddit, I think they're just really suspicious of self-promotion. Personally my advice if you want Iris to be a success now you have made it is to focus entirely on building great things with it rather than promotion - it's far more persuasive to see things that someone has built with a framework, and it's also far better for libraries to be improved for real apps or it becomes entirely theoretical. See for example the usage of buffalo for the gophercon site. Best of luck with Iris though, and please do try to keep posts on that under this iris-go account and save them up for special occasions where you have a substantial release to show off. I'd expect to see no more than 1 link per week about Iris, and also try to find some other interesting Go stories to post if you have the time.
@iris-go, happy to see you took my advice and are posting under an identifiable account. Can I just ask what you're using this for? I think it would be interesting to see concrete apps solving a real problem you had, for example a forum, blog, spa or other web app. Are you actively using it (as opposed to developing it)?
Hello @kenny, I just saw that this website has comments, I didn't see your comment I just create one account to represent the Iris web framework because many users asked this from me, this name exists here and on reddit ( I'm new user on reddit too, I didn't liked it but I cannot ignore the community). Yes I'm actively using the sessions on Iris and always fixing bugs, if you see the issues and my answers, I answer on 5-10 mins and I open my editor to fix any bug in the same time :) Nice to meet you, are you the mod of this news page?
Not a huge fan of SQL (it is powerful but the rigid grammar is a bit awkward and relations feel more painful than they should be), but I do like this new trend of creating a query language for all sorts of data, it's a really powerful way to look into data in any format. A query language for logs would be awesome as well, I wonder if anyone is working on that?
Hi there, posts are not actually removed, but they are flagged for being spam or offtopic which takes them off the home page. I will usually try to explain why, as I did on this post and previous ones for Iris. Please do try to follow the guidelines, and don't post things which contravene them or repeatedly post similar things (the fake accounts don't really convince :). I'm especially uninterested in meta-drama like this post, so it will be mercilessly flagged.
@kataras I have reset your account so that you can post from it again as it ended up with minus points after some early spam. I'd prefer that you post things like this under your real username, rather than pseudonyms like this.
It might be good to post a single post listing all the different examples that are available for iris, and what sort of apps can be built with them, as that would be more useful for readers than seeing individual little examples. I'd prefer to see some examples of Iris stuff being used in the wild, what areas of web dev you feel it is most suited to, etc. There are a lot of fledgling frameworks out there for Go but frankly too much promotion without working on real problems puts me off a bit, I'd rather see examples of real-world use to convince people to give yours a try. What are you using it for?
So you're rewriting content as it arrives from form fields by passing it through two escaping functions? You will end up encoding some things like & twice won't you? This will end up mangling perfectly valid form fields and it'd be hard to get back to the original, so I wouldn't recommend it.
Usually it's considered better to sanitize on output (to html) rather than at the time of input.
If you're interested in why Go is missing generics, this is the document to read first as it gives a nice summary of why you'd want them (less boilerplate, better containers), and why they are not yet in the language (technical challenges).
This looks really great, is anyone using it for a real app? It does require you to build in support for a given service though - would be perfect if someone made a package that let you self-deploy instantly to any of the popular services or VPS providers, so that users could instantly self-deploy. This was the promise of containers but it doesn't feel quite ready for that yet.
I'm doing something much simpler here - using cloud config on DO to deploy to CoreOS without containers on a single instance - just a systemd service (as he says in this talk, containers feel like overkill for deploying Go apps). kubernetes does look great for larger deploys though.
Add another to PHP. A note I will make is that when I try to explain Go to other devs I say "It does for static languages what Python did for dynamic ones"
Prior to Python I would have to say Perl was a top dog in dynamic languages, doesn't mean that people went from Perl to Python it just means that Python simplified things in dynamic programming that were otherwise very cumbersome.
Maybe this captured the hearts of C programmers and users of other like languages that would have liked dynamic languages but either thought the current solutions weren't good enough or were too complex and it might be quicker to implement in their native language.
Similarly Go does the inverse, people that thought static languages were too cumbersome for a lot of use cases, now flock to Go because it writes as fast as Python but runs like C.
Overall interesting article and I would like to see more data on this, could help shift the education of go resulting in better propagation.
I've adjusted the totals, probably should add a little poll facility here as the twitter ones are quite limited. I do think this is quite interesting data though, even though limited, as it points to a difference between the usage at google and usage outside as well, and gives some hints as to why one of the most frequent questions coming up is about web frameworks (if they're building similar sorts of web apps to those built with python or ruby), even if the orthodoxy on places like reddit is against it.
It's interesting because when I first came to Go it definitely felt like a better C rather than a better Ruby/Python say, but as times goes on it feels like I enjoy it in the way I did working with Ruby, and never did with C or other C-derivatives (which felt too clumsy in things like string handling), but it certainly has its own distinct flavour. In spite of not being very complex or cutting-edge Go keeps many of the most interesting features of other languages for me and jettisons the rest (inheritance in particular), and like Ruby has a great stdlib which covers a lot of what you need (though I know the maintainers now regret making it so big : ). So I agree it feels closer kinship to something like Ruby/Python than say C or Rust.
This is really interesting, in many ways it's similar to the system used for building golangnews - generators, asset pipeline, custom handlers, handlers returning an error, partials and layouts for templates, migrations, query builder. The type Context interface is pretty bloated though - this is the disadvantage of trying to stick everything into one param for handlers - it becomes a god object which knows and does too much.
Interesting to see a few solutions from different people converging, probably partly because of previous experience with other frameworks like Rails. To those who say you don't need a framework, I think it depends on the style of application you're building; if a service you'd probably be quite happy with just the stdlib, but if you're building a full web app which serves html, the stdlib is lacking in some areas. Trying to avoid using a framework will just mean reinventing your own solutions for authentication/authorisation, layouts, forms, persistence, assets etc - basically building your own ad-hoc framework instead. That's not always a bad thing but there are certain elements that almost every web app (as opposed to service) requires.
This seems a little disingenuous, since anyone using net/http will get http2 support for free since 1.6 it has been steadily improving. I've changed the link to point to the project home page. I do think the author should spend more time quietly plugging away on improving this project and less time on promotion - github stars are a little like page visits, popularity is necessary perhaps for a project to flourish but is not a good long-term goal - being used for production sites and being steadily developed in line with real-world requirements (not benchmarks or feature lists) is far more important. The best frameworks I've used were extracted from real projects rather than made from scratch.
As @tomf says below, I'm not sure if this is used for anything in production yet? Would love to see some links to the projects if so.
Wow, this is incredible! I wonder if it means Google are planning porting youtube to go at some point. This transpiler would make that task a lot easier in the long term if they have interop with Go libraries, they can port little bits at a time to native go and maintain them as go libraries. It says "those transpiled programs run seamlessly within the Go runtime".
This is a great overview of the subject. The youtube video has the wrong title, it's not about Go for crypto developers, but rather Crypto for those using Go. Recommends using AES (hardware support) with GCM block cipher mode for encryption, bcrypt for hashing passwords, SHA2 for hashing with HMAC, and ECDSA/P256 for signatures (why not pgp?). There's a lot of older legacy stuff in the Go crypto libraries in stdlib which you shouldn't use unless you absolutely have to.
Just as an update, this site was served with caddy server for about a year, without issues, primarily for the letsencrypt integration (it was one of the first to have it). I've now switched to serving directly with the latest version of Go in a single process, and will soon be enabling autocert support. As @matt says above though, it has been used on some large-ish sites for some time now, so anyone wondering if it is production ready, the answer at this point is definitely yes.
This was quite fun but I do find the UI with multiple overlapping windows a bit confusing and difficult to navigate, particularly when you click on a type definition and open another file. Does anyone know what UI library it's using? I'd prefer to see a list of the files and then be able to go into each one individually, as it is there is a lot more clicking with the mouse than I'd expect with a CLI.
Yes, I wonder what the author is using this for? Perhaps just a proof of concept - it would be hard to use it to browse in its current state, though it does show off linking between different parts of the AST, I think I prefer the html approach taken by godoc and don't mind opening a browser for that.
I do think you should make this default to showing the top stories instead, given there is no way to vote, it's better just to show stories that have already been voted up. Also, I think you should use their idea of an exit option at the end, I couldn't find a way to exit save Ctl-C.
It would be really nice to be able to filter stories on a query string too, as then you could easily search for stories about Go for example (wish HN had better metadata for this, but it would still help).
Thanks for great feedback @kenny. Totally agree with "top stories" as default story type. About exit option, I thinking about a "help" screen with a description of all keyboard shortcuts. About filter stories, great idea, thanks :)
Sometimes shifting complexity around really helps though - splitting it up into manageable chunks means you don't have to keep all of a complex system in your head at once (of course packages/libraries are another angle to approach this from, rather than separate services).
This works with mysql only at the moment by wrapping the mysql command? Can you give us a rundown of how you normally use it and what problems it solves? The readme doesn't give a lot of detail and that might be worth adding there too. A few minor points I'd look at:
You are using string formatting to build sql command strings like SelectTablesCmd - that could allow sqli?
You should document the permissions the tool needs to run (CREATEDB?) and the requirements on server/client
For a tool like this working with dbs and potentially destructive, you need tests.