Archives
-
Test post
http://www.projectdistributor.net/Projects/Project.aspx?projectId=131
http://markitup.com/Posts/Post.aspx?postId=58 -
RegexLib V2 - now with added ASP.NET V2 :)
The other day I posted a blog entry about the migration of RegexLib to ASP.NET V2 - the article can be found here:
-
Wow...
-
My blog is moving - http://markitup.com/Blog/
As of today, I'm moving my blogging across to my own domain. If you would like to remain subscribed to my blog then please update your aggregator to point to:
-
Upcoming IBF Speaking Engagements
Over the next couple of months I'll be travelling around Australia and New Zealand to present on the topic of IBF. Here is the pitch for my talk:
-
Introducing Bracky
I've been talking a lot about UI agents lately and how I'm currently prototyping some UI agent stuff for web applications. Today I'd like to introduce Bracky:
-
ASP 2 Quickstarts
Very Nice!
-
Information Bridge Resources and FAQ
Over the next couple of months I'm planning to get out to each of the User Groups in Australia and New Zealand to discuss the Information Bridge Framework (IBF). I'm going to use this post to link to some resources and to provide an overview of what IBF is.
-
VATICANUS: The Word & its Meaning = Vatican
DISCLAIMER: I read this here today so, unless told otherwise... I'm just going to believe that it's true:
-
What CommandName's to use in a FormView
taken from Fredrik's blog:
-
Is RegExLib full of "it"?
Today I read a comment on Jeffrey Schoolcraft's regex blog from Randal L. Schwartz which I felt that I needed to respond to. As I started writing the comment I realized that this is probably news that needs to be publicly visible, so I'm posting it to my blog and cross referencing the original comment. First, here is Randal's comment:
-
Smart UI agents and inductive UI
Continuing on from my blog entries last week about automated UI agents, I've started building a small prototype which will hopefully lead to an actual implementation. In my prototype I have several agents accessing shared context through which they have some access to shared resources - such as logging tool and reporting agents. As I mentioned, the output from my prototype will be an implementation, but I'm also preparing to cover it with a whitepaper on some of the lower level details.
-
We live, as we dream alone
Every now and then you will see blog entries which read along the lines of:
-
Using generics to build generic data logic layers
Consider exposing raw Generic collections from your data logic layers, such as:
-
Using the SiteMapDataSource to display lists of links
Danny Chen just blogged about the SiteMap and showed some interesting ways to make use of custom attributes:
-
Autonomous Interface Agents
Web applications that are context aware will be able to make greater use of autonomous agents to directly manipulate graphical objects and affect the users display. The MIT paper titled "Autonomous Interface Agents" says of autonomous agents:
-
Getting ASP.NET Membership running against your own database
If you want to install the ASP.NET V2 tables and procedures for things such as Membership, Personalization, etc you need to run the aspnet_regsql.exe tool against your database. The tool can be found in the %windir%\Microsoft.NET\Framework\{FRAMEWORKVERSION} folder.
-
Out of context - how to know whether Tweety can fly
In the excellent whitepaper titled "Out of context: Computer systems that adapt to, and learn from, context", there's a section nearing the end titled: "The view of context from other fields" - containing the following subsections:
-
Coaching end-users
Today I had a conversation with a friend who is a musician. We were discussing some of the similarities between music and software and even extending many of them to any creative pursuit where the output is consumed by others. One of the things that we noted was that, as with software, end-users of music do not always share the feelings and experiences envisaged by the architects of the product. I'm not sure how a musician can give corrective advice to an end-user about such a discrepancy at "runtime" but, in software we are fortunate that we can use context and UI elements to teach a user about the intended usage of a system.
-
Grokking Information technology
My days of using handcrafted Access database applications to automate inventory reconcilliation seems to be nothing but a distant blur. Too soon it seems that I was whisked away from my accounting world of Office applications and surrounded by millions of rows worth of raw data. There's something about real, raw data that seems to make my nerve edges jingle in a merry way.
-
Joe versus the volcano
After reading Mark's entry about Joe versus the Volcano I decided that I'd go out and hire it for a look. Finding a video store which had it in stock wasn't that easy, even asking for it raised eyebrows - this is not surprising given that the film was released at about the same time that some of the staff who were serving me were born.
-
Random quotes
"In the moment when I truly understand my enemy, understand him well enough to defeat him, then in that very moment I also love him."
- Orson Scott Card -
A lazy Saturday afternoon...
This week seemed to take forever and just felt like one of those really heavy weeks. I think that it started when I opened my mouth and spoke up against the tide of "professional demonstrators" who follow each other around and see it as their job to heckle the IE product. Then, I seemed to spend the remainder of the weekend reading every blogger take their turn to bag the crap out of a hundred or so people who have asked Microsoft not to end support of VB6 - makes you wonder really... I think that everybody must be getting restless while they wait for Beta 2 to arrive ;-)
-
The Groove buy - my opinion
I think that it's because the Office team at Microsoft finally found someone else who likes Sharepoint :P
-
This is what happens when you give people a soapbox
A couple of days ago, Chris Wilson wrote this about IE and standards:
-
Day 4: 3 subscriptions
Three additions today, bringing my tally for the week up to 9 (including one which I made up). This is well short of a budgetted quota of 5 per day which means that I'm falling behind already. Anyhow... todays additions are:
-
Day 3: added only 1 subscription
Just one subscription today as the submissions seem to be drying up...
Brad Abrams weblog
Hi Darren, Brad here, just wanted to drop my USP in for you to take a look at: -
Information Bridge
Next week I'm giving a demo on IBF (Information Bridge Framework). The IBF allows users to leverage some existing Office technologies - namely, the Research Task Pane and SmartTags - to perform interactions with line-of-business data.
-
Using sprocs or ad-hoc sql
I use stored procedures "religiously" when developing data-centric applications and I'm always interested as to why people who use SqlServer would want to use ad-hoc sql; I think that the main reason is probably is the perception of "duplicating effort".
-
Day 2: added 3 subscribtions
As per comments left against the USP post, I've added 3 more bloggers to my .Opml file. I think that Jeroen's USP is a little borderline in the compelling stakes but, given the lack of competition he gets in.
-
Office - the best of times and the worst of times
Every 3 or 4 months I'm enticed back into Office development; lured back by some incredibly interesting collaboration tools. And it seems that every time I'm left thinking that someone in the Office camp really just doesn't understand me.
-
New ProjectDistributor build: Codewise added
I've uploaded a new build of ProjectDistributor which includes some bug fixes and some major new functionality.
-
Signs that you should shut up...
From CityFlirting...
-
Active Sink
I don't know if it's just me but I have the distinct impression that ActiveSync is an application which gets worked on by the work experience people when there is no filing to be done.
-
Day 1: added 2 subscribtions
Yesterday I mentioned that, if you send me a compelling USP (Unique Selling Point) that I'll subscribe to your blog. Day 1 and only 2 people have taken up the offer so far:
-
Gimme your USP and I'll subscribe to you
Before I start, just think about this in relation to the reams of text that you shove into the arteries of the web each day/week/month... what's the Unique Selling Point of your blog? OK, on with the post...
-
John Bradford
Recently, a colleague posted an article on his blog highlighting a supposed issue with another website, only thing is that, as it so happens, his entry was probably not correct and was promptly removed from his blog. Of course, it wasn't removed immediately and he subsequently faced a bollocking at the hands of the accused, nothing too harsh, but the gloves were clearly out for a while.
-
Kanoodle offers bucks and extended reach for bloggers
Kanoodle, an online contextual ad player, is targetting bloggers as the new wave of publishers to supplement its recently announced BrightAds advertising tool. BrightAds is similar to Google's AdSense and some of the Moreover products in that they insert category-targeted contextual ads into content.
-
New Years resolutions - a running report
This year I scaled back from my normal 5-6 new years resolutions to a mere 2: excercise more regularly; drink more water.
-
Information Bridge Framework 1.5 is now available
I've been waiting for this for some time as it looks very promising...
-
Kingdomality Test
Ok, these things always get me; apparently I'm a White Knight... giddy-up!
-
Code to easily create zip files on the fly
The other day I posted about a free .NET library for creating zip files on the fly:
-
SqlServer 2005 pricing details
http://weblogs.asp.net/ericnel/archive/2005/02/24/379865.aspx
-
Listen to tunes while you swim or workout
Here's my next purchase:
-
Nested sub-queries always elude me
Tonight I was writing the stored procedure which will return lists of data to the Codewise nighly updates. Basically, each night, Codewise will call a webservice and you need to return a list of all GUID's which have been either ADDED, UPDATED or REMOVED since the last time they called your service. The return Xml will look something like this:
-
Codewise posts
I've already blog'ged a bit about Codewise and how ProjectDistributor will be a participating site in that program. Over the next week or so, I'm planning to do some blogging about what I had to do to add Codewise functionality into the ProjectDistributor application. I'll also be blogging about the "experience" that ProjectDistributor users will have when adding Codewise samples.
-
Code Review Tip: Poorly named variables are symptoms
When reviewing code one of the ways to quickly spot "messy" logic is to look for module-scoped variables with whacky names. Poor naming is often an indicator that the reason for writing code was unclear to the developer at the time.
-
Do you remember...
-
Health monitoring in ASP.NET V2
Here's a couple of nice articles about the new HealthMonitoring feature in Whidbey:
-
Zip'ping files
Tonight I was using the ICSharpCode zip library to zip files for my Codewise implementation. Basically, when users nominate to make a Relase visible to Codeshare, I create a manifest file and package it and the Release file into a Codewise package.
-
Next Canberra Geek Dinner...
Earlier this evening a drank some wierd green shit and apparently I said this:
Hear me, mortals, and quake before my wrath. I have given much thought and sacrificed many hours of rest pondering your request, and it has been decided that you may hold a dinner of those classed geekus canberrus. The evening of the tenth night of the third month shall be allocated, starting thirty of your earth minutes after the sixth stroke. Whomsoever wishes to come shall be permitted travel tokens, so long as it does not acheive rambunctious levels.
-
The Compact Framework continues to confound!
I've been doing quite a bit of work with Pocket PC and Windows CE devices lately and, let me say that I've not had to learn so many new tips-n-tricks for quite a while. Yesterday's learning was that, when installing .cab files on a CE device, be sure to extract them from the \Program Files folder.
-
ProjectDistributor to become a Codewise partner by Beta 2 timeframe
I'm currently implementing features which will allow ProjectDistributor to participate in the Codewise community.
-
ProjectDistributor 1.0.3 to be released this weekend
This weekend I'm going to make a new build of the ProjectDistributor application available for download from the site. This is a bit of a strange release in that it's not very polished. Let me explain
-
The sexy new web
A nice article about how we are starting to expand and build smarter, richer applications on the web.
-
Some thoughts about Robert Scoble and his blog reading
NOTE: This blog entry is about Robert Scoble the brand. Not Robert Scoble the human being.
-
Time for the next wave of hashing functions?
As Eli just blogged, it appears as though the vultures are circling some of the current hashing algorithms - MD4, MD5, and now SHA1.
-
More on (no that's 2 words) blog processing
Over the weekend I posted an article about blog reading; specifically, I suggested that it's inefficient to attempt to keep up with a large number of blogs.
-
A big week for the Readify guys
Well, the cat's out of the bag... Greg Low has joined Readify to strengthen our offering around Sql Server and, in particular Yukon/SQL Server 2005. Read about it from the man himself:
-
A big week for the Telligent guys
I see that Telligent have made 1 major announcements over the weekend.
-
How much information can you process
I'm constantly amazed at just how many blogs some of my friends have subscribed to. I've seen aggregators with 50, 100, even 500 subscribed blogs!
-
Microsoft AnitSpyware refresh
per Jonathon Hardwick...
-
Pet peeve: Meeting Requests
I think that I might have blogged about this before but, I can't be bothered Msn'ing it and it's worth repeating anyway.
-
Post-Cache substitution sample
Having read Nikhil's great post about this topic recently, I thought that I'd add a working demo of that sample to the Whidbey group on ProjectDistributor. You can grab the source here.
-
Continuous integration
I'm looking at setting up an automated continuous integration plan for the OneIsABlog application and I came across a couple of Scott Hanselman articles today which touch on this topic:
-
OneIsABlog
A little while back I wrote about my intentions to create some blogging software:
-
Test...
Seems that I cannot log into my blog via the web interface so just running a test from PostXING
-
Using the Code Metrics tool
Peli has created an amazing number of tools to assist with the job of tracking down and stomping on defects. One of the ones that I use the most are his Reflector add-ins:
-
How to setup debugging and deploying from VS.NET to a Windows CE device over ActiveSync
To get the ActiveSync connection you must:
-
The next ProjectDistributor feature coming soon - Permissions
Permissions
-
Howard's agile slide deck
Here's a great article by Howard Van Rooijen on the topic of architecture, implementation and tools.
-
If you are in Canberra for the security summit...
Many of us will be catching up for drinks etc at O'Malleys pub in Civic. I'll be there at about 7:00pm so, given that my picture is on this blog and I don't know what you look like - except you of course Geoff! - , if you see me come and say "Hi".
-
Fredrik has just released a new cut of PermissionManager
You can read his announcement here:
-
Extending a MembershipUser
You are creating a blogging application where users each have a blog. Blogs are clustered into categories of blogs. A user can have roles in more than 1 blog.
-
Code Camp Oz
In April we are having the first Australian Code Camp to get away and have time to discuss thoughts about development issues.
-
Simple implementation of a custom MembershipUser and Membership provider
I've just uploaded a demo which extends the AccessMembershipProvider and the MembershipUser:
-
Whidbey: a roll-up of some of my thoughts to date...
Ok, I've been doing quite a bit more playing with the Roles and Membership side of ASP.NET V2 with the December CTP release and, I think that I'm starting to get a better picture of its intended use.
-
Breaking the ASP.NET Whidbey silence
If you have written stuff in pre-DecCTP Whidbey there's a high probablility that it won't run when you port to the DecCTP. One of the major reasons will be the new ConfigurationManager class:
-
Another installment of: How Darren would use Membership, Roles and Profiles...
I'm not sure whether anybody actually followed my idiotic journey on a whacky architectural path of discovery but, if you did - forget everything that I said. I've done quite a bit of prototyping over the past 2 days playing around with various things and can now see the errors of my ways.
-
My experience with the ProductFeedbackCenter
A couple of days ago I sat down to play around with a project that I'm working on in Whidbey. When I opened up the IDE I went to click on my project in the Recent Project's list but it wasn't there!
-
Link to the Whidbey Quickstarts...
-
Expanding upon my speculations: Membership, RoleProvider and ProfileAPI implementation
So, yesterday I jumped out on a limb and speculated how I thought that application architecture might include a wrapper around Membership and the Profile API in ASP.NET Whidbey. Then the guy who created it chimed in with a comment to let me know that I'm wrong! So either he's wrong or I am.
-
Speculating about Membership, RoleProvider and ProfileAPI implementation
There's an important area in ASP.NET Whidbey that I've started looking into that I haven't seen much coverage on, that is, how will the new user/security features be used when building a real application?
-
ProjectDistributor release 1.0.2 now available
http://projectdistributor.net/Releases/Release.aspx?releaseId=92
-
Code Camp Oz (1) just announced
Mitch has just announced the date and location of the first Australian Code Camp:
-
Remove dead projects from the VS home page
I just logged a feature request on the Feedback center about wanting to be able to remove unwanted projects from the "Recent Projects" list on the VS .NET home page.
-
WebParts :: CustomVerbs
Just released my first prototype showing some WebPart code:
-
About the Whidbey demo's thing...
Yesterday I blogged about a new group I've created to post small demo's and prototypes of ASP.NET Whidbey projects:
-
VS 2005 Beta 1 Expiry Date is...
July 1, 2005
-
Current version of Visual Web Developer
I posted a question in the ASP.NET forums asking about what is the current build of Visual Web Developer:
-
Custom Build Providers
I came across this blog entry from Fritz Onion today about an experience that he had with Custom Build Providers:
-
Valid Rss is probably a good thing
Like Duncan, I just checked my Rss feed. Guess what?
-
Do you have any small ASP.NET Whidbey working demo's
Lately I've been playing around with the Whidbey a bit more, focussing on such things as UrlMapping, WebParts and Profiles. In that time I've been doing things in a rather ad-hoc manner.
-
A small but noteable design change to the ASP.NET Portal Framework
In ASP.NET V2 the new portal framework looks very interesting. It seems to me that this framework will lend itself very nicely for building applications which allow for a plug-in style of architecture and therefore make re-use of componentize UI widgets much more prominent.
-
compressing javascript code in perl
While sneaking around the web tonight looking at sites which have interesting dhtml controls or cool stylesheets, I came across this article:
-
Data access strategy in Whidbey
Fredrik has blogged some great Whidbey posts - not to mention his 3,000 or so posts on the www.asp.net forums! Recently he wrote a couple of articles about some of the data access techniques which are available in Whidbey. First he looked at the Data Component which allows to quickly and easily create Crud-like data access layers:
-
Next tool - a blogging application
Before I start my rant I should say that .Text is pretty decent web app.; it's seems way more complex than it needs to be and it's very difficult to install but there's a lot of great implementation code in there. Last week while unsuccessfully trying to get it installed and create some initial users I decided that, for my next application I'm going to build a blogging app. Much of the API design and feature-set is done and I'm currently working through the technical architecture.
-
Koders - searchable repository of code snippets
Found this site via Mitch's blog:
-
Test entry
This is a test entry
-
Evilness and me
I can't believe that I'm less evil than Mitch.
-
Next ProjectDistributor release
I'll be uploading the source for the next version (1.0.2) of Project Distributor on the weekend and, be upgrading the live site to run off of that version. Here is the list of new features which appear in this release:
-
Using metadata and reflection to dynamically manage message routing
Most routing systems have a transformation phase where, based on its current state, a message is transformed into a document and routed to an endpoint. Systems such as BizTalk provide GUI's and designers to remove the need for cumbersome coding by making the rules and subsequent transformations configurable; here's an example of a switch statement in a listener class where the rules of the routing engine are hard-coded:
-
SQL Server 2005 Beta 2 Transact-SQL Enhancements
Great, in-depth article about some of the new TSQL language features. Definitely worth a read...
-
noFollow in Google...
Saved for later reading... http://weblogs.asp.net/jgalloway/archive/2005/01/18/355551.aspx
-
ControlState in ASP.NET V2
Fredrick has a great post about the new ControlState feature in ASP.NET V2:
-
2 interesting Msdn articles
An interesting article about writing code to test UI:
http://msdn.microsoft.com/msdnmag/issues/05/01/TestRun/default.aspx -
Cool screen capturing tool
http://www.projectdistributor.net/Projects/Project.aspx?projectId=55
-
Named Groups, Unnamed Groups and Captures
I see this question come up a bit in regex so, I thought that I'd blog about it. It has to do with 2 things: named groups and captures. First, an example...
-
The question isn't: what did I get; the question is: what did I pay - or so it seems!
After several unsuccesful days of trying to implement trackbacks into ProjectDistributor I'm going to put it on the backburner for a while. It's not that I don't want it in there, it's just that time is short and the ability to get useful help about working with .Text seems a little short these days... {sigh}
-
MbUnit... It's all green baby; it's all green!
Last night I started moving some of the PD logic out of the web project and into a Framework project so that it is more accessible to other components. This resulted from some refactoring of the app. That I've been doing since implementing UrlRewriting and Trackbacks. I created UrlManager, and UrlFormatter classes to handle some of the url matching logic and thought that I'd start building a library of Unit Tests against this new stuff.
-
Instant Messenger 7 - good and bad
I installed the new beta version of the Instant Messenger client last week. The UI is really nice and they've added some great new features. The 2 most obvious of these are "Nudges" and "Winks". Nudges allow you to "shake" the IM client of the person that you are chatting with... I haven't really worked out when is the optimum time to use these yet.
-
AssemblyReflector - event based discovery of assemblies
AssemblyReflector (Conchango.Code.Reflection) is an event-based assembly parser - it allows assemblies to be searched for Attributes, Events, Fields, Interfaces, Methods, Nested Types, Properties and Types, by subscribing to the relevent OnDiscover event and then performing a search for the member based on several available search methods;
o Contains(string)
o EndsWith(string)
o Named(string)
o OfType(Type) - Attributes Only
o StartsWith(string)
o WithBindingFlags(BindingFlags)
When an event is raised you can access the discovered member via the EventArgs -
Melbourne Geek Dinner and future Canberra Geek Dinners
While I was in Melbourne, I arranged to get a few of the guys together for a geek dinner. This followed hot on that tail of the first one in Canberra a few weeks back. People attending this one were:
· Cameron Reilley - http://reilly.typepad.com/ (Australian Podcasting mogul)
· Matthew Cosier - http://weblogs.asp.net/autocrat/ (Melbourne Microsoft guy and InfoPath extraordinaire)
· William Luu - http://www.will.id.au/blog/ (active Melbourne community guy) -
Presenting and Facilitating
I spent the past couple of days in Melbourne with several other Readify guys doing a course about "presenting and facilitating".
-
A new PostXING feature coming...
Chris hinted at a new PostXING feature:
http://weblogs.asp.net/cfrazier/archive/2005/01/10/350343.aspx -
Made some improvements to the TrackBack Prototype
I refactored the code a bit and added trackback validation:
-
Mitch's Shrinklet App
A cool little tray based app for creating "shrunken" urls...
-
Prototype of a small trackback system
Last night I prototyped a small trackback system:
-
Learning about Trackbacks
Today I learnt a lot more about Trackbacks - I had as I'm hoping to implement them in ProjectDistributor.
-
Master Pages and building "nice" sites
Brian is seeking community feedback around the topic of MasterPages to help ascertain the value of the ASP.NET team including some standard, out-of-the-box templates with the product. Read his blog entry here:
-
Justin's fine; busy, but fine.
Finally managed to get in touch with Justin over the last night. He's been busy getting things done and drifting in and out due to Christmas activities... added to that, he had taken the Christmas break to rebuild his home intranet. Not sure when we'll see him around again but it's good to know that everything is OK.
-
More ProjectDistributor activity - auto updater and upcoming features
Jonathon de Halleux (aka: "Peli") has just published a neat little helper assembly written in Whidbey which uses the ProjectDistributor webservices and can help detect whether there is a new Release available for download for a given project.
-
Today was a day of software installation
So, today I installed:
-
Still trying to track down Justin
Quite a few people have left comments and e-mailed me directly regarding the whereabouts of Justin ( http://weblogs.asp.net/dneimke/archive/2005/01/04/345973.aspx ), so I thought that I'd leave this message to let everyone know that I'm still following up on this.
-
Me not nerd
-
Entering the world of TestDriven.NET
I've been giving serious consideration to writing a limited set of Unit Tests for the ProjectDistributor codebase - in particular, tests against the web services and several web scenatios. Today I started that journey by downloading TestDriven.NET:
-
Partial Book Review: Extreme Programming Adventures in C#
While reading "Extreme Programming Adventures in C#" over the past couple of days it was interesting to see how the author - Ron Jeffries - abstracts out a "model" in a GUI app that he builds and then shows that Unit tests can be run off of that.My feeling - after reading this stuff - is that, in applying the discipline of using unit tests (not necessarily TDD) would potentially have the added benefit of improve the style of your code/architecture.I'm only part way through the book but I'm really enjoying it. The style of the book is adventurous. One of the things that have turned me off of books on this topic in the past is that they edit out all of the ugliness and uncertainty that you face when you attempt to implement this stuff. Ron makes no secret of the fact that he was often uncertain when deciding over which path to take at key decision points - this makes it much easier to jump in and have a play. -
You have to love the new world of collaboration
Tonight I jumped on IM and sent a message of congratulations to Roy about his MVP award (apparently he got it 4 months ago... news to me!).
-
ProjectDistributor 1.0.1.0 Source Code now available
The latest version of the ProjectDistributor source code is now available - this is the same version that the website is running. You can grab the code here:
-
Has anybody heard from Justin Rogers lately?
Justin Rogers is a brilliant guy who helped me a great deal last year with many projects. He is a prolific writer, blogger and developer... or at least he was up until early November.
-
PD website now running on new version
I uploaded the new ProjectDistributor version to the server yesterday, so, the site is now running on that. Existing users will notice some changes when they login.
-
Chuck is blogging
Charles Sterling, Developer Evangelist extroadinaire is blogging. Charles (aka Chuck) looks after the scuba diving technologies from the shores of sunny Gold Coast, Australia. I can just picture him sitting down by the waterfront by his home there blogging away while reeling in a Mackerel and swigging away on a nice cold Fosters :-)
-
First post from rebuilt laptop.
First post from PostXING on my newly built laptop :-) All-in-all it took me about 6 hours to get from woe to woe to woe to go. Along the way it was useful to follow in the footsteps of my sagacious colleague Mitch who built his machine only a day prior to me doing it.
-
New ProjectDistributor release
I'm just testing the release for the next version of ProjectDistributor. This release includes bug fixes from the previous release as well as the following new features: